in aws/hhvm1/lambdas/test.py [0:0]
def test_normalize_results_and_check_for_failures(self):
v1 = '3.30.12'
v1_before = {
'version': v1,
'results': {
'MakeSourceTarball': {'skip': True},
'ForEachPlatform': [
{
'platform': 'debian-8-jessie',
'results': {
'MakeBinaryPackage': {'success': {'ec2': 'i-faceb001'}},
},
},
{
'results': {
'MakeBinaryPackage': {'skip': True},
},
'platform': 'ubuntu-14.04-trusty',
},
],
'PublishSourceTarballAndPublishDockerImages': [
{
'results': {
'PublishSourceTarball': {
'skip': False,
'taskInput': {
'name': 'PublishSourceTarball-3.30.12',
'env': 'VERSION="3.30.12"\nIS_NIGHTLY="false"',
},
'success': {'ec2': 'i-faceb002'},
},
},
},
{
'results': {
'PublishDockerImages': {'success': {'ec2': 'i-faceb003'}},
},
},
],
},
}
v1_after = {
'MakeSourceTarball': {'skip': True},
'ForEachPlatform': {
'debian-8-jessie': {
'MakeBinaryPackage': {'success': {'ec2': 'i-faceb001'}},
},
'ubuntu-14.04-trusty': {
'MakeBinaryPackage': {'skip': True},
},
},
'PublishSourceTarball': {'success': {'ec2': 'i-faceb002'}},
'PublishDockerImages': {'success': {'ec2': 'i-faceb003'}},
}
v2 = '4.42.0'
v2_before = {
'version': v2,
'results': {'foo': {'skip': True}},
}
v2_after = {
'foo': {'skip': True},
}
parallel_steps_before = [
{
'results': {
'UpdateIndices': {'success': {'ec2': 'i-faceb004'}},
},
},
{
'results': {
'InvalidateCloudFront': {'success': {'ec2': 'i-faceb005'}},
},
},
]
everything_after = {
'ForEachVersion': {
v1: v1_after,
v2: v2_after,
},
'UpdateIndices': {'success': {'ec2': 'i-faceb004'}},
'InvalidateCloudFront': {'success': {'ec2': 'i-faceb005'}},
}
# normalization inside ForEachVersion
self.assertEqual(normalize_results.lambda_handler(v1_before), v1_after)
self.assertEqual(normalize_results.lambda_handler(v2_before), v2_after)
# final normalization after ForEachVersion
self.assertEqual(
check_for_failures.lambda_handler(normalize_results.lambda_handler({
'buildInput': {},
'results': {
'ForEachVersion': [
{
'version': v1,
'results': v1_after,
},
{
'version': v2,
'results': v2_after,
},
],
'UpdateIndicesAndInvalidateCloudFront': parallel_steps_before,
},
})),
everything_after
)
# normalization of everything at once (not used right now but was used in
# the past and we may need it again at some point)
self.assertEqual(
check_for_failures.lambda_handler(normalize_results.lambda_handler({
'buildInput': {},
'results': {
'ForEachVersion': [
v1_before,
v2_before,
],
'UpdateIndicesAndInvalidateCloudFront': parallel_steps_before,
},
})),
everything_after
)
with self.assertRaisesRegex(
Exception,
'^The following steps have failed:\nfoo bar$'
):
check_for_failures.lambda_handler(normalize_results.lambda_handler(
{'results': {'foo': {'failure': {'Cause': 'bar'}}}}
))
with self.assertRaisesRegex(
Exception,
'^The following steps have failed:\n'
'MakeSourceTarball 4.2.0 \n'
'PublishBinaryPackage 4.2.0 debian \n'
'MakeBinaryPackage 4.2.1 ubuntu \n'
'PublishBinaryPackage 4.2.1 ubuntu \n'
'PublishBinaryPackage 4.2.1 debian \n'
'bar $'
):
check_for_failures.lambda_handler(normalize_results.lambda_handler({
'results': {
'foo': {'success': {}},
'ForEachVersion': [
{
'version': '4.2.0',
'results': {
'MakeSourceTarball': {'failure': {}},
'ForEachPlatform': [
{
'platform': 'ubuntu',
'results': {'PublishBinaryPackage': {'success': {}}}
},
{
'platform': 'debian',
'results': {'PublishBinaryPackage': {'failure': {}}},
},
],
},
},
{
'version': '4.2.1',
'results': {
'MakeSourceTarball': {'success': {}},
'ForEachPlatform': [
{
'platform': 'ubuntu',
'results': {
'MakeBinaryPackage': {'failure': {}},
'PublishBinaryPackage': {'failure': {}},
}
},
{
'platform': 'debian',
'results': {
'MakeBinaryPackage': {'success': {}},
'PublishBinaryPackage': {'failure': {}},
},
},
],
},
},
],
'bar': {'failure': {}},
},
}))