Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update awscli, botocore, boto3 and moto in Travis #2627

Closed
wants to merge 40 commits into from
Closed
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
5c4e91d
Add tests
nikochiko Jan 10, 2020
c2c1a30
Add unit tests for restart_workers
nikochiko Jan 10, 2020
09f462a
Merge branch 'master' into aws-utils-test-RestartWorker
nikochiko Jan 10, 2020
6f5c98a
Correct mock.patch syntax
nikochiko Jan 10, 2020
9036276
Merge branch 'aws-utils-test-RestartWorker' of https://github.com/col…
nikochiko Jan 10, 2020
0d0354a
Fix syntax
nikochiko Jan 10, 2020
d20446b
Reorder imports and use random client token
nikochiko Jan 11, 2020
47856f5
Use aws_utils.client_token_generator for token
nikochiko Jan 11, 2020
3edeb61
Fix linting
nikochiko Jan 11, 2020
513d706
Reorder imports, add class variables
nikochiko Jan 12, 2020
d8d5fbb
Reorder imports
nikochiko Jan 13, 2020
8adb62b
Try fix for deploymentController
nikochiko Jan 14, 2020
718ec95
Merge branch 'aws-utils-test-RestartWorker' of https://github.com/col…
nikochiko Jan 14, 2020
92e4708
Revert trial changes
nikochiko Jan 14, 2020
3451a1f
Add test changes
nikochiko Jan 14, 2020
b24e85d
Update .travis.yml
nikochiko Jan 14, 2020
bc4a515
Add --update flag
nikochiko Jan 14, 2020
94508c8
Update .travis.yml
nikochiko Jan 14, 2020
6e01ae8
Update test_aws_utils.py
nikochiko Jan 14, 2020
df24164
install latest aws deps in travis
nikochiko Jan 18, 2020
3f36692
Merge branch 'master' into UpdateAWSdeps
nikochiko Jan 18, 2020
158d171
Only install awscli without toching other deps
nikochiko Jan 18, 2020
3982354
Add sample tests for aws_utils
nikochiko Jan 18, 2020
ccd5933
Fix linting
nikochiko Jan 18, 2020
979e568
Fix typo
nikochiko Jan 18, 2020
f87dad8
Try uninstalling and reinstallilng boto3 botocore
nikochiko Jan 18, 2020
034531d
Add -y flag to pip uninstall
nikochiko Jan 18, 2020
f4b60c5
Remove versioning from requirements/dev.txt
nikochiko Jan 18, 2020
1752d5c
Try reverting changes to confirm results
nikochiko Jan 18, 2020
562186c
Revert "Try reverting changes to confirm results"
nikochiko Jan 18, 2020
b43ca45
Use moto==1.3.8
nikochiko Jan 18, 2020
e5cdf4a
Revert last change
nikochiko Jan 18, 2020
2bc8d94
Remove test_aws_utils
nikochiko Jan 18, 2020
ed10453
Remove unnecessary change
nikochiko Jan 18, 2020
15cc0ad
Make random change
nikochiko Jan 18, 2020
809458a
Revert random change
nikochiko Jan 18, 2020
74f5bcb
Merge branch 'UpdateAWSdeps' of https://github.com/coldk91ght/EvalAI …
nikochiko Jan 18, 2020
b2c4f86
Try some changes
nikochiko Jan 18, 2020
601e3e9
Remove test_aws_utils
nikochiko Jan 18, 2020
e43ae8c
Use mock_sqs on BaseTestClass for submission_worker
nikochiko Jan 18, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -41,8 +41,8 @@ before_install:
services:
- xvfb
install:
- pip install awscli
- pip install -r requirements/dev.txt
- pip install awscli==1.16.57 coveralls
script:
- flake8 ./
- karma start --single-run
Expand Down
8 changes: 4 additions & 4 deletions requirements/common.txt
@@ -1,6 +1,6 @@
asgi-redis==1.4.3
boto3==1.9.88
botocore==1.12.88
boto3
botocore
celery[sqs]==4.3.0
commonmark==0.5.4
django==1.11.23
Expand All @@ -10,13 +10,13 @@ django-import-export==0.5.1
djangorestframework==3.9.3
djangorestframework-expiring-authtoken==0.1.4
django-cors-headers==1.3.1
django-rest-auth[with_social]==0.9.2
django-rest-auth[with_social]==0.9.2
django-ses==0.8.5
docker-compose==1.21.0
drfdocs==0.0.11
drf-yasg==1.11.0
kubernetes==10.0.1
moto==1.3.8
moto
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moto should be in dev

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nvm, since it was in common you can keep it here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay!

pika==0.10.0
pickleshare==0.7.4
Pillow==6.2.0
Expand Down
1 change: 0 additions & 1 deletion requirements/dev.txt
Expand Up @@ -21,4 +21,3 @@ sphinx-markdown-tables==0.0.9
sphinx-rtd-theme==0.3.0
pytest-django==3.1.2
Faker==0.7.7

137 changes: 137 additions & 0 deletions tests/unit/challenges/test_aws_utils.py
@@ -0,0 +1,137 @@
import boto3
import challenges.aws_utils as aws_utils
import os

from allauth.account.models import EmailAddress
from challenges.models import Challenge
from datetime import timedelta
from django.contrib.auth.models import User
from django.utils import timezone
from hosts.models import ChallengeHost, ChallengeHostTeam
from http import HTTPStatus
from moto import mock_ecs
from rest_framework.test import APITestCase, APIClient


class BaseTestClass(APITestCase):
def setUp(self):
aws_utils.COMMON_SETTINGS_DICT["EXECUTION_ROLE_ARN"] = "arn:aws:iam::us-east-1:012345678910:role/ecsTaskExecutionRole"

self.client = APIClient(enforce_csrf_checks=True)

self.user = User.objects.create(
username="someuser",
email="user@test.com",
password="secret_password",
)

EmailAddress.objects.create(
user=self.user, email="user@test.com", primary=True, verified=True
)

self.participant_user = User.objects.create(
username="someparticipantuser",
email="participantuser@test.com",
password="secret_password",
)

EmailAddress.objects.create(
user=self.participant_user,
email="participantuser@test.com",
primary=True,
verified=True,
)

self.challenge_host_team = ChallengeHostTeam.objects.create(
team_name="Test Challenge Host Team", created_by=self.user
)

self.challenge = Challenge.objects.create(
title="Test Challenge",
short_description="Short description for test challenge",
description="Description for test challenge",
terms_and_conditions="Terms and conditions for test challenge",
submission_guidelines="Submission guidelines for test challenge",
creator=self.challenge_host_team,
published=False,
is_registration_open=True,
enable_forum=True,
queue="test_queue",
anonymous_leaderboard=False,
start_date=timezone.now() - timedelta(days=2),
end_date=timezone.now() + timedelta(days=1),
approved_by_admin=False,
)
self.challenge.slug = "{}-{}".format(
self.challenge.title.replace(" ", "-").lower(), self.challenge.pk
)[:199]
self.challenge.save()

self.challenge_host = ChallengeHost.objects.create(
user=self.user,
team_name=self.challenge_host_team,
status=ChallengeHost.ACCEPTED,
permissions=ChallengeHost.ADMIN,
)
self.challenge2 = Challenge.objects.create(
title="Test Challenge 2",
creator=self.challenge_host_team,
queue="test_queue_2",
start_date=timezone.now() - timedelta(days=2),
end_date=timezone.now() + timedelta(days=1),
)

self.client.force_authenticate(user=self.user)
self.ecs_client = boto3.client(
"ecs",
region_name=os.environ.get("AWS_DEFAULT_REGION", "us-east-1"),
aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY"),
aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"),
)

def set_challenge_workers(self, challenge, num_workers):
challenge.workers = num_workers
challenge.save()


@mock_ecs
class BaseAdminCallsClass(BaseTestClass):
def setUp(self):
super(BaseAdminCallsClass, self).setUp()

self.challenge3 = Challenge.objects.create(
title="Test Challenge 3",
creator=self.challenge_host_team,
queue="test_queue_3",
start_date=timezone.now() - timedelta(days=2),
end_date=timezone.now() + timedelta(days=1),
)
self.ecs_client.create_cluster(clusterName="cluster")
self.client_token = aws_utils.client_token_generator()

@classmethod
def queryset(cls, pklist):
queryset = Challenge.objects.filter(pk__in=pklist)
queryset = sorted(queryset, key=lambda i: pklist.index(i.pk))
return queryset


class TestCreateServiceByChallengePK(BaseAdminCallsClass):

def test_create_service_by_challenge_pk(self):
self.ecs_client.create_cluster(clusterName=aws_utils.COMMON_SETTINGS_DICT["CLUSTER"])
response = aws_utils.create_service_by_challenge_pk(self.ecs_client, self.challenge, self.client_token)
self.assertEqual(response["ResponseMetadata"]["HTTPStatusCode"], HTTPStatus.OK)
self.assertEqual(self.challenge.workers, 1)


class TestRegisterTaskDefByChallengePK(BaseAdminCallsClass):

def test_register_task_def_by_challenge_pk(self):
self.ecs_client.create_cluster(clusterName=aws_utils.COMMON_SETTINGS_DICT["CLUSTER"])
response = aws_utils.register_task_def_by_challenge_pk(
self.ecs_client, self.challenge.queue, self.challenge)
self.assertEqual(
response["ResponseMetadata"]["HTTPStatusCode"], HTTPStatus.OK)
self.assertEqual(
self.challenge.task_def_arn, response["taskDefinition"]["taskDefinitionArn"])