Adding a cron job and a new workload for it.
This commit is contained in:
parent
045f415c82
commit
cc5943cac9
5 changed files with 143 additions and 0 deletions
18
src/pingjob/Dockerfile
Normal file
18
src/pingjob/Dockerfile
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
FROM python:3-slim as base
|
||||||
|
|
||||||
|
FROM base as builder
|
||||||
|
|
||||||
|
RUN apt-get -qq update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
g++
|
||||||
|
|
||||||
|
COPY requirements.txt .
|
||||||
|
|
||||||
|
RUN pip install --install-option="--prefix=/install" -r requirements.txt
|
||||||
|
|
||||||
|
FROM base
|
||||||
|
COPY --from=builder /install /usr/local
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
ENTRYPOINT ["./pinger.sh"]
|
||||||
|
|
86
src/pingjob/pinger.py
Normal file
86
src/pingjob/pinger.py
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# Copyright 2018 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import sys
|
||||||
|
|
||||||
|
BASE = sys.argv[1]
|
||||||
|
|
||||||
|
products = [
|
||||||
|
'0PUK6V6EV0',
|
||||||
|
'1YMWWN1N4O',
|
||||||
|
'2ZYFJ3GM2N',
|
||||||
|
'66VCHSJNUP',
|
||||||
|
'6E92ZMYYFZ',
|
||||||
|
'9SIQT8TOJO',
|
||||||
|
'L9ECAV7KIM',
|
||||||
|
'LS4PSXUNUM',
|
||||||
|
'OLJCESPC7Z']
|
||||||
|
|
||||||
|
|
||||||
|
def index():
|
||||||
|
requests.get(BASE + "/")
|
||||||
|
|
||||||
|
|
||||||
|
def setCurrency():
|
||||||
|
currencies = ['EUR', 'USD', 'JPY', 'CAD']
|
||||||
|
requests.post(BASE + "/setCurrency",
|
||||||
|
{'currency_code': random.choice(currencies)})
|
||||||
|
|
||||||
|
|
||||||
|
def browseProduct():
|
||||||
|
requests.get(BASE + "/product/" + random.choice(products))
|
||||||
|
|
||||||
|
|
||||||
|
def viewCart():
|
||||||
|
requests.get(BASE + "/cart")
|
||||||
|
|
||||||
|
|
||||||
|
def addToCart():
|
||||||
|
product = random.choice(products)
|
||||||
|
requests.get(BASE + "/product/" + product)
|
||||||
|
requests.post(BASE + "/cart", {
|
||||||
|
'product_id': product,
|
||||||
|
'quantity': random.choice([1, 2, 3, 4, 5, 10])})
|
||||||
|
|
||||||
|
|
||||||
|
def checkout():
|
||||||
|
addToCart()
|
||||||
|
requests.post(BASE + "/cart/checkout", {
|
||||||
|
'email': 'someone@example.com',
|
||||||
|
'street_address': '1600 Amphitheatre Parkway',
|
||||||
|
'zip_code': '94043',
|
||||||
|
'city': 'Mountain View',
|
||||||
|
'state': 'CA',
|
||||||
|
'country': 'United States',
|
||||||
|
'credit_card_number': '4432-8015-6152-0454',
|
||||||
|
'credit_card_expiration_month': '1',
|
||||||
|
'credit_card_expiration_year': '2039',
|
||||||
|
'credit_card_cvv': '672',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if not BASE:
|
||||||
|
print("ERROR: no frontend address")
|
||||||
|
else:
|
||||||
|
print("pinging" + BASE)
|
||||||
|
index()
|
||||||
|
browseProduct()
|
||||||
|
addToCart()
|
||||||
|
viewCart()
|
||||||
|
checkout()
|
27
src/pingjob/pinger.sh
Executable file
27
src/pingjob/pinger.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/sh -eu
|
||||||
|
#
|
||||||
|
# Copyright 2018 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
trap "exit" TERM
|
||||||
|
|
||||||
|
if [ -z "${FRONTEND_ADDR}" ]; then
|
||||||
|
echo >&2 "FRONTEND_ADDR not specified"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -x
|
||||||
|
python pinger.py "${FRONTEND_ADDR}"
|
1
src/pingjob/requirements.in
Normal file
1
src/pingjob/requirements.in
Normal file
|
@ -0,0 +1 @@
|
||||||
|
requests
|
11
src/pingjob/requirements.txt
Normal file
11
src/pingjob/requirements.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile --output-file=requirements.txt requirements.in
|
||||||
|
#
|
||||||
|
certifi==2018.11.29 # via requests
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
idna==2.8 # via requests
|
||||||
|
requests==2.21.0
|
||||||
|
urllib3==1.24.1 # via requests
|
Loading…
Add table
Add a link
Reference in a new issue