mirror of
https://github.com/autistic-symposium/backend-and-orchestration-toolkit.git
synced 2025-06-07 22:42:59 -04:00
merge files from the blockchain infra repo (#59)
This commit is contained in:
parent
23f56ef195
commit
2a6449bb85
346 changed files with 29097 additions and 132 deletions
|
@ -0,0 +1 @@
|
|||
# -*- coding: utf-8 -*-
|
19
code/aws/lambda-function/sqs-sns_example/tests/fixtures/SNS_contract.json
vendored
Normal file
19
code/aws/lambda-function/sqs-sns_example/tests/fixtures/SNS_contract.json
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
|
||||
{
|
||||
"clipId": "11111111111",
|
||||
"cameraId": "11111111111",
|
||||
"startTimestampInMs": 1534305591000,
|
||||
"endTimestampInMs": 1534305611000,
|
||||
"status": "CLIP_AVAILABLE",
|
||||
"bucket": "sl-cam-clip-archive-prod",
|
||||
"clip": {
|
||||
"url": "https://test.mp4",
|
||||
"key": "/583499c4e411dc743a5d5296/11111111111.mp4"
|
||||
},
|
||||
"thumbnail": {
|
||||
"url": "https://test_{size}.png",
|
||||
"key": "/11111111111/1111111111_{size}.png",
|
||||
"sizes": [300, 640, 1500, 3000]
|
||||
}
|
||||
}
|
||||
|
24
code/aws/lambda-function/sqs-sns_example/tests/fixtures/SQS_contract.json
vendored
Normal file
24
code/aws/lambda-function/sqs-sns_example/tests/fixtures/SQS_contract.json
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"Records": [
|
||||
{
|
||||
"body": "{'clipId': '507f191e810c19729de860ea', 'retryTimestamps': [], 'cameraId': '583499c4e411dc743a5d5296', 'startTimestampInMs': 1537119363000, 'endTimestampInMs': 1537119423000}",
|
||||
"receiptHandle": "MessageReceiptHandle",
|
||||
"md5OfBody": "7b270e59b47ff90a553787216d55d91d",
|
||||
"eventSourceARN": "arn:aws:sqs:us-west-1:123456789012:MyQueue",
|
||||
"eventSource": "aws:sqs",
|
||||
"awsRegion": "us-west-1",
|
||||
"messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
|
||||
"attributes": {
|
||||
"ApproximateFirstReceiveTimestamp": "1523232000001",
|
||||
"SenderId": "123456789012",
|
||||
"ApproximateReceiveCount": "1",
|
||||
"SentTimestamp": "1523232000000"
|
||||
},
|
||||
"messageAttributes": {
|
||||
"SentTimestamp": "1523232000000"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
10
code/aws/lambda-function/sqs-sns_example/tests/fixtures/recording_contract.json
vendored
Normal file
10
code/aws/lambda-function/sqs-sns_example/tests/fixtures/recording_contract.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"startDate":"2018-08-25T19:20:16.000Z",
|
||||
"endDate":"2018-08-25T19:30:16.000Z",
|
||||
"thumbLargeUrl":"https://test_full.jpg",
|
||||
"recordingUrl":"https://test.mp4",
|
||||
"thumbSmallUrl":"https://test_small.jpg",
|
||||
"alias":"test"
|
||||
}
|
||||
]
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
""" Test Root service handler module for AWS Lambda function. """
|
||||
|
||||
import os
|
||||
import json
|
||||
import pytest
|
||||
|
||||
from lib.routes import root
|
||||
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), '..', 'fixtures')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sns_event_record():
|
||||
sns_event_record_path = os.path.join(fixtures_path, 'SNS_contract.json')
|
||||
with open(sns_event_record_path, 'r') as sns_event_record_json:
|
||||
return json.load(sns_event_record_json)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def context():
|
||||
return {}
|
||||
|
||||
|
||||
class TestHandler():
|
||||
def test_type_error_for_bad_params(self, context):
|
||||
try:
|
||||
root.handler('', context)
|
||||
except TypeError as e:
|
||||
pass
|
||||
else:
|
||||
self.fail('ExpectedException not raised')
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
""" AWS Wrapper Test Module """
|
||||
|
||||
import unittest
|
||||
import mock
|
||||
|
||||
import lib.aws_wrapper
|
||||
|
||||
|
||||
class TestAwsWrapper(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.filename = 'filename_test'
|
||||
self.destination = 'destination_test'
|
||||
self.clip_metadata = {'test': 'test'}
|
||||
self.aw = lib.aws_wrapper.AwsWrapper()
|
||||
|
||||
@mock.patch('lib.aws_wrapper.boto3')
|
||||
def test_download_clip_boto(self, boto3):
|
||||
self.aw.download_video(self.filename, self.destination)
|
||||
boto3.resource.assert_called_with('s3')
|
||||
|
||||
@mock.patch('lib.aws_wrapper.boto3')
|
||||
def test_upload_clip_boto(self, boto3):
|
||||
self.aw.upload_asset(self.filename, self.destination)
|
||||
boto3.client.assert_called_with('s3')
|
||||
|
||||
@mock.patch('lib.aws_wrapper.boto3')
|
||||
def test_send_sns_msg_boto(self, boto3):
|
||||
aw = lib.aws_wrapper.AwsWrapper()
|
||||
aw.send_sns_msg(self.clip_metadata)
|
||||
boto3.client.assert_called_with('sns')
|
|
@ -0,0 +1,52 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
""" Cam Wrapper Test Module """
|
||||
|
||||
import mock
|
||||
import unittest
|
||||
import pytest
|
||||
|
||||
import lib.cam_wrapper
|
||||
import lib.utils
|
||||
|
||||
|
||||
class TestCamWrapper(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.session_start_ms = '1535223360000'
|
||||
self.session_end_ms = '1535224400000'
|
||||
self.cameraId = '1111111111111111'
|
||||
self.clipId = '1111111111111111'
|
||||
|
||||
self.metadata_test_clip_key = '/{0}/{1}.mp4'.format(
|
||||
self.cameraId, self.clipId)
|
||||
self.metadata_test_tb_key = '/{0}/{1}'.format(
|
||||
self.cameraId, self.clipId) + '_{size}.jpg'
|
||||
self.cw = lib.cam_wrapper.CamWrapper(
|
||||
self.session_start_ms, self.session_end_ms,
|
||||
self.cameraId, self.clipId)
|
||||
|
||||
@mock.patch('lib.utils.get_request')
|
||||
def test_get_alias(self, mocked_method):
|
||||
self.cw .get_alias()
|
||||
self.assertTrue(mocked_method.called)
|
||||
|
||||
def test_metadata(self):
|
||||
self.assertEqual(
|
||||
self.cw .metadata['clip']['key'], self.metadata_test_clip_key)
|
||||
self.assertEqual(
|
||||
self.cw .metadata['thumbnail']['key'], self.metadata_test_tb_key)
|
||||
|
||||
@mock.patch('lib.utils.get_request')
|
||||
def test_get_clip_names(self, mocked_method):
|
||||
alias = self.cw .get_clip_names()
|
||||
self.assertTrue(mocked_method.called)
|
||||
|
||||
@mock.patch('lib.utils.put_request')
|
||||
def test_put_clip_metadata(self, mocked_method):
|
||||
alias = self.cw .put_clip_metadata()
|
||||
self.assertTrue(mocked_method.called)
|
||||
|
||||
def test_update_clip_status(self):
|
||||
test_status = 'test'
|
||||
self.cw.update_clip_status(test_status)
|
||||
self.assertEqual(self.cw.metadata['status'], test_status)
|
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
""" Ffmpeg Wrapper Test Module """
|
||||
|
||||
import lib.ffmpeg_wrapper
|
||||
import unittest
|
||||
|
||||
|
||||
class TestFfmpegWrapper(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.epoch_video = 1.535884819e+12
|
||||
self.crop_start = '03:39.000'
|
||||
self.crop_end = '13:01.000'
|
||||
|
||||
self.session_start_ms = '1535884600000'
|
||||
self.session_end_ms = '1535885600000'
|
||||
self.alias = 'test'
|
||||
self.clipId = '1111111111111111'
|
||||
self.clips = []
|
||||
self.fw = lib.ffmpeg_wrapper.FfmpegWrapper(
|
||||
self.alias, self.clips,
|
||||
self.session_start_ms,
|
||||
self.session_end_ms,
|
||||
self.clipId)
|
||||
|
||||
def test_calculate_crop_time(self):
|
||||
crop_start, crop_end = self.fw.calculate_trim_time(self.epoch_video)
|
||||
print crop_start, crop_end, self.crop_end, self.crop_start
|
||||
self.assertEqual(crop_end, self.crop_end)
|
||||
self.assertEqual(crop_start, self.crop_start)
|
80
code/aws/lambda-function/sqs-sns_example/tests/test_utils.py
Normal file
80
code/aws/lambda-function/sqs-sns_example/tests/test_utils.py
Normal file
|
@ -0,0 +1,80 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
""" Utils Test Module """
|
||||
|
||||
import os
|
||||
import json
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
import mock
|
||||
import requests
|
||||
import requests_mock
|
||||
import lib.utils
|
||||
|
||||
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def get_fixture(fixture_json):
|
||||
get_sqs_event = os.path.join(fixtures_path, fixture_json)
|
||||
with open(get_sqs_event, 'r') as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
class TestClipGeneratorTrigger(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.domain = 'http://test.com'
|
||||
self.endpoint = 'filetest.mp4'
|
||||
self.file_url = 'http://test.com/filetest.mp4'
|
||||
self.clipname = 'camtest.20180815T140019.mp4'
|
||||
self.epoch_in_ms = 1535224400000
|
||||
self.timestamp = '20180825T191320'
|
||||
self.timestamp_format = '%Y%m%dT%H%M%S'
|
||||
self.msecs = 1807
|
||||
self.resp = {'test1': 'test2'}
|
||||
|
||||
def test_url_join(self):
|
||||
self.assertEqual('http://test.com/filetest.mp4',
|
||||
lib.utils.url_join(self.domain,
|
||||
self.endpoint), msg=None)
|
||||
|
||||
def test_get_request(self):
|
||||
with requests_mock.Mocker() as m:
|
||||
m.get(self.file_url, json=self.resp)
|
||||
self.assertTrue(lib.utils.get_request(self.domain, self.endpoint))
|
||||
|
||||
def test_get_basename_str(self):
|
||||
self.assertEqual('filetest.mp4', lib.utils.get_basename_str(
|
||||
self.file_url), msg=None)
|
||||
|
||||
def test_get_timestamp_str(self):
|
||||
self.assertEqual('20180815T140019000',
|
||||
lib.utils.get_timestamp_str(self.clipname), msg=None)
|
||||
|
||||
def test_get_location_str(self):
|
||||
self.assertEqual('hbpiernscam', lib.utils.get_location_str(
|
||||
self.clipname), msg=None)
|
||||
|
||||
def test_timestamp_to_epoch(self):
|
||||
self.assertEqual(self.epoch_in_ms, lib.utils.timestamp_to_epoch(
|
||||
self.timestamp, self.timestamp_format), msg=None)
|
||||
|
||||
def test_epoch_to_timestamp(self):
|
||||
self.assertEqual(self.timestamp, lib.utils.epoch_to_timestamp(
|
||||
self.epoch_in_ms, self.timestamp_format), msg=None)
|
||||
|
||||
def test_humanize_delta_time(self):
|
||||
self.assertEqual(
|
||||
'00:01.807', lib.utils.humanize_delta_time(self.msecs), msg=None)
|
||||
|
||||
@mock.patch('lib.utils.os.remove')
|
||||
def test_remove_file(self, mocked_remove):
|
||||
lib.utils.remove_file(self.clipname)
|
||||
self.assertTrue(mocked_remove.called)
|
||||
|
||||
@mock.patch('lib.utils.subprocess.check_output')
|
||||
def test_run_subprocess(self, mocked_subprocess):
|
||||
lib.utils.run_subprocess(['ls'], 'ok', 'err')
|
||||
self.assertTrue(mocked_subprocess.called)
|
Loading…
Add table
Add a link
Reference in a new issue