Index: appengine/cr-buildbucket/swarming/test/swarmingcfg_test.py |
diff --git a/appengine/cr-buildbucket/swarming/test/swarmingcfg_test.py b/appengine/cr-buildbucket/swarming/test/swarmingcfg_test.py |
index 218d7c3bc1910882cb5207cd9b6a4e31bdb05523..9b07aeeb9e36324b905f43bc661ff351bcb5ec99 100755 |
--- a/appengine/cr-buildbucket/swarming/test/swarmingcfg_test.py |
+++ b/appengine/cr-buildbucket/swarming/test/swarmingcfg_test.py |
@@ -48,6 +48,25 @@ class SwarmingCfgTest(testing.AppengineTestCase): |
def test_bad(self): |
cfg = Swarming( |
+ hostname='chromium-swarm.appspot.com', |
+ builders=[Swarming.Builder()], |
+ ) |
+ self.cfg_test(cfg, [ |
+ 'builder #1: name unspecified', |
+ 'builder #1: has no "pool" dimension', |
+ 'builder #1: recipe: name unspecified', |
+ 'builder #1: recipe: repository unspecified', |
+ ]) |
+ |
+ cfg = Swarming( |
+ hostname='chromium-swarm.appspot.com', |
+ builder_defaults=Swarming.Builder(name='x'), |
+ ) |
+ self.cfg_test(cfg, [ |
+ 'builder_defaults: do not specify default name', |
+ ]) |
+ |
+ cfg = Swarming( |
common_swarming_tags=['wrong'], |
common_dimensions=[''], |
task_template_canary_percentage=102, |
@@ -79,22 +98,16 @@ class SwarmingCfgTest(testing.AppengineTestCase): |
) |
self.cfg_test(cfg, [ |
'hostname unspecified', |
- 'common tag #1: does not have ":": wrong', |
- 'common dimension #1: does not have ":"', |
'task_template_canary_percentage must must be in [0, 100]', |
- 'builder #1: name unspecified', |
+ 'builder_defaults: tag #1: does not have ":": wrong', |
+ 'builder_defaults: dimension #1: does not have ":"', |
'builder #1: tag #1: does not have ":": wrong2', |
'builder #1: dimension #1: no key', |
('builder #1: dimension #2: ' |
'key "a.b" does not match pattern "^[a-zA-Z\_\-]+$"'), |
- 'builder #1: recipe unspecified', |
('builder b2: tag #1: do not specify builder tag; ' |
'it is added by swarmbucket automatically'), |
'builder b2: dimension #2: duplicate key x', |
- ('builder b2: has no "pool" dimension. ' |
- 'Either define it in the builder or in "common_dimensions"'), |
- 'builder b2: recipe: name unspecified', |
- 'builder b2: recipe: repository unspecified', |
'builder b2: recipe: properties #1: does not have colon', |
'builder b2: recipe: properties #2: key not specified', |
('builder b2: recipe: properties #3: ' |
@@ -106,6 +119,60 @@ class SwarmingCfgTest(testing.AppengineTestCase): |
'builder b2: priority must be in [0, 200] range; got 300', |
]) |
+ cfg = Swarming( |
+ common_swarming_tags=['wrong'], |
+ common_dimensions=[''], |
+ task_template_canary_percentage=102, |
+ builders=[ |
+ Swarming.Builder( |
+ swarming_tags=['wrong2'], |
+ dimensions=[':', 'a.b:c', 'pool:default'], |
+ ), |
+ Swarming.Builder( |
+ name='b2', |
+ swarming_tags=['builder:b2'], |
+ dimensions=['x:y', 'x:y2'], |
+ recipe=Swarming.Recipe( |
+ properties=[ |
+ '', |
+ ':', |
+ 'buildername:foobar', |
+ 'x:y', |
+ ], |
+ properties_j=[ |
+ 'x:"y"', |
+ 'y:b', |
+ 'z', |
+ ] |
+ ), |
+ priority=300, |
+ ), |
+ ], |
+ ) |
+ self.cfg_test(cfg, [ |
+ 'hostname unspecified', |
+ 'task_template_canary_percentage must must be in [0, 100]', |
+ 'builder_defaults: tag #1: does not have ":": wrong', |
+ 'builder_defaults: dimension #1: does not have ":"', |
+ 'builder #1: tag #1: does not have ":": wrong2', |
+ 'builder #1: dimension #1: no key', |
+ ('builder #1: dimension #2: ' |
+ 'key "a.b" does not match pattern "^[a-zA-Z\_\-]+$"'), |
+ ('builder b2: tag #1: do not specify builder tag; ' |
+ 'it is added by swarmbucket automatically'), |
+ 'builder b2: dimension #2: duplicate key x', |
+ 'builder b2: recipe: properties #1: does not have colon', |
+ 'builder b2: recipe: properties #2: key not specified', |
+ ('builder b2: recipe: properties #3: ' |
+ 'do not specify buildername property; ' |
+ 'it is added by swarmbucket automatically'), |
+ 'builder b2: recipe: properties_j #1: duplicate property "x"', |
+ 'builder b2: recipe: properties_j #2: No JSON object could be decoded', |
+ 'builder b2: recipe: properties_j #3: does not have colon', |
+ 'builder b2: priority must be in [0, 200] range; got 300', |
+ ]) |
+ |
+ |
def test_common_recipe(self): |
cfg = Swarming( |
hostname='chromium-swarm.appspot.com', |
@@ -113,13 +180,13 @@ class SwarmingCfgTest(testing.AppengineTestCase): |
common_recipe=Swarming.Recipe( |
repository='https://x.com', |
name='foo', |
- properties=['a:b'], |
+ properties=['a:b', 'x:y'], |
), |
builders=[ |
Swarming.Builder(name='debug'), |
Swarming.Builder( |
name='release', |
- recipe=Swarming.Recipe(properties=['a:c']), |
+ recipe=Swarming.Recipe(properties=['a:c'], properties_j=['x:']), |
), |
], |
) |
@@ -138,6 +205,5 @@ class SwarmingCfgTest(testing.AppengineTestCase): |
], |
) |
self.cfg_test(cfg, [ |
- 'common_recipe: properties #1: does not have colon', |
- 'builder debug: recipe: repository unspecified', |
+ 'builder_defaults: recipe: properties #1: does not have colon', |
]) |