Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bd7bde188 | ||
|
|
5f9f4762a9 | ||
|
|
cead9d5aea | ||
|
|
03de5aacfb | ||
|
|
5b9e568d54 | ||
|
|
eafbffce25 | ||
|
|
06c49d551d |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
venv/
|
||||
__pycache__/
|
||||
db/
|
||||
staticfiles/
|
||||
staticfiles/
|
||||
.vscode/settings.json
|
||||
@@ -17,14 +17,18 @@ build:
|
||||
name: gcr.io/kaniko-project/executor:debug
|
||||
entrypoint: [""]
|
||||
script:
|
||||
- echo $DEPLOY
|
||||
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
|
||||
|
||||
test:
|
||||
stage: test
|
||||
variables:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
only:
|
||||
variables:
|
||||
- $CI_COMMIT_TAG
|
||||
services:
|
||||
- name: postgres:12
|
||||
alias: postgres
|
||||
image:
|
||||
name: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
|
||||
entrypoint: [""]
|
||||
@@ -46,6 +50,6 @@ deploy:
|
||||
- curl -o /usr/bin/kubectl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
|
||||
- chmod +x /usr/bin/kubectl
|
||||
- curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
|
||||
- helm install --upgrade $DEPLOY ./helm --set image=$CI_REGISTRY_IMAGE --set tag=$CI_COMMIT_TAG
|
||||
- POD=$(./kubectl get pods --selector=app=$DEPLOY --output=jsonpath='{.items[*].metadata.name}')
|
||||
- ./kubectl exec $POD -- python manage.py migrate
|
||||
- helm upgrade --install $DEPLOY ./helm --set image=$CI_REGISTRY_IMAGE --set tag=$CI_COMMIT_TAG
|
||||
- POD=$(kubectl get pods --selector=app=$DEPLOY --output=jsonpath='{.items[*].metadata.name}')
|
||||
- kubectl exec $POD -- python manage.py migrate
|
||||
11
.vscode/launch.json
vendored
11
.vscode/launch.json
vendored
@@ -12,8 +12,11 @@
|
||||
"args": [
|
||||
"test",
|
||||
],
|
||||
"env": {
|
||||
"DB_HOST": "localhost"
|
||||
},
|
||||
"django": true,
|
||||
"preLaunchTask": "Migrate"
|
||||
"preLaunchTask": "docker-compose up"
|
||||
},
|
||||
{
|
||||
"name": "Run Server",
|
||||
@@ -22,10 +25,12 @@
|
||||
"program": "${workspaceFolder}/manage.py",
|
||||
"args": [
|
||||
"runserver",
|
||||
"--noreload"
|
||||
],
|
||||
"env": {
|
||||
"DB_HOST": "localhost"
|
||||
},
|
||||
"django": true,
|
||||
"preLaunchTask": "Migrate"
|
||||
"preLaunchTask": "docker-compose up"
|
||||
}
|
||||
]
|
||||
}
|
||||
20
.vscode/tasks.json
vendored
20
.vscode/tasks.json
vendored
@@ -2,23 +2,9 @@
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Collect Static",
|
||||
"command": "venv/bin/python manage.py collectstatic --no-input",
|
||||
"type": "shell",
|
||||
"presentation": {
|
||||
"reveal": "always"
|
||||
},
|
||||
"group": "build"
|
||||
},
|
||||
{
|
||||
"dependsOn": "Collect Static",
|
||||
"label": "Migrate",
|
||||
"command": "venv/bin/python manage.py migrate",
|
||||
"type": "shell",
|
||||
"presentation": {
|
||||
"reveal": "always"
|
||||
},
|
||||
"group": "build"
|
||||
"label": "docker-compose up",
|
||||
"command": "docker-compose up -d",
|
||||
"type": "shell"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -26,6 +26,8 @@ services:
|
||||
environment:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
ports:
|
||||
- 5432:5432
|
||||
|
||||
pgadmin:
|
||||
image: dpage/pgadmin4:4
|
||||
@@ -45,7 +47,7 @@ services:
|
||||
- "traefik.http.services.traefik-service.loadbalancer.server.port=8080"
|
||||
command: --api.insecure=true --providers.docker --log.level=ERROR --accesslog=true
|
||||
ports:
|
||||
- "80:80"
|
||||
- 80:80
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ else:
|
||||
burst = False
|
||||
sleep = 1 / rate
|
||||
print(f"Beginning load test at {rate} calls/second")
|
||||
# url = 'https://button.ducoterra.net/button/'
|
||||
url = 'http://button.localhost/button/'
|
||||
url = 'https://button.ducoterra.net/'
|
||||
# url = 'http://button.localhost/'
|
||||
|
||||
def timer(func, *args, **kwargs):
|
||||
then = time.time()
|
||||
@@ -0,0 +1,3 @@
|
||||
image: hub.ducoterra.net/ducoterra/button
|
||||
tag: 1.0.2
|
||||
secret: true
|
||||
10
ui/tests.py
10
ui/tests.py
@@ -13,28 +13,26 @@ class SimpleTest(TestCase):
|
||||
def test_button(self):
|
||||
# Test initial load
|
||||
c = Client()
|
||||
response = c.get('/button')
|
||||
self.assertEqual(response.status_code, 301)
|
||||
response = c.get('/button/')
|
||||
response = c.get('/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context.get("achievement"), {})
|
||||
|
||||
# Test first achievement
|
||||
response = c.post('/button/', {})
|
||||
response = c.post('/', {})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json().get("pressed"), 1)
|
||||
self.assertEqual(response.json().get("achievement"), "Clicked!")
|
||||
self.assertEqual(c.session.get('pressed'), 1)
|
||||
|
||||
# Test second achievement
|
||||
response = c.post('/button/', {})
|
||||
response = c.post('/', {})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json().get("pressed"), 2)
|
||||
self.assertEqual(response.json().get("achievement"), "Clicked Twice!")
|
||||
self.assertEqual(c.session.get('pressed'), 2)
|
||||
|
||||
# Test no achievement
|
||||
response = c.post('/button/', {})
|
||||
response = c.post('/', {})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json().get("pressed"), 3)
|
||||
self.assertEqual(response.json().get("achievement"), None)
|
||||
|
||||
12
ui/views.py
12
ui/views.py
@@ -10,7 +10,6 @@ achievements = {
|
||||
24: "I'm that old",
|
||||
32: "2^5",
|
||||
64: "2^6",
|
||||
69: "Nice",
|
||||
100: "one hundred",
|
||||
128: "2^7",
|
||||
200: "two hundred",
|
||||
@@ -18,7 +17,6 @@ achievements = {
|
||||
256: "2^8",
|
||||
300: "three hundred",
|
||||
400: "four hundred",
|
||||
420: "Blaze it",
|
||||
500: "half thousand",
|
||||
512: "2^9",
|
||||
600: "six hundred",
|
||||
@@ -55,17 +53,17 @@ achievements = {
|
||||
def button(request):
|
||||
PRESSED = 'pressed'
|
||||
ACHIEVE = 'achievement'
|
||||
current = request.session.get(PRESSED, 0)
|
||||
request.session[PRESSED] = current + 1
|
||||
pressed = request.session.get(PRESSED, 0)
|
||||
|
||||
if request.method == "POST":
|
||||
pressed = pressed + 1
|
||||
request.session[PRESSED] = pressed
|
||||
response = {
|
||||
PRESSED: current,
|
||||
ACHIEVE: achievements.get(current)
|
||||
PRESSED: pressed,
|
||||
ACHIEVE: achievements.get(pressed)
|
||||
}
|
||||
return JsonResponse(response)
|
||||
|
||||
pressed = current
|
||||
response = {PRESSED: pressed}
|
||||
achieved = {k:v for k,v in achievements.items() if k <= pressed}
|
||||
response.update({ACHIEVE: achieved})
|
||||
|
||||
Reference in New Issue
Block a user