コード例 #1
0
    def test_resolve_bad_canary_2(self):
        poolcfg = self.parse("""
      task_template_deployment: {name: "a" canary_chance: -1}
    """)

        pools_config._resolve_task_template_deployments(
            self.ctx, {}, poolcfg.task_template_deployment)

        self.assertEqual(
            [x.text for x in self.ctx.result().messages],
            [('deployment[u\'a\']: '
              'canary_chance out of range `[0,9999]`: -1 -> %-0.01')])
コード例 #2
0
    def test_resolve_deployments(self):
        poolcfg = self.parse("""
      task_template: {name: "prod" env: {var: "VAR" value: "prod"}}
      task_template: {name: "canary" env: {var: "VAR" value: "canary"}}

      task_template_deployment: {
        name: "standard"
        prod: {include: "prod"}
        canary: {include: "canary"}
        canary_chance: 5000
      }
    """)

        tmap = pools_config._resolve_task_template_inclusions(
            self.ctx, poolcfg.task_template)
        dmap = pools_config._resolve_task_template_deployments(
            self.ctx, tmap, poolcfg.task_template_deployment)

        self.assertSetEqual({'standard'}, set(dmap.keys()))

        self.assertEqual(
            dmap['standard'],
            pools_config.TaskTemplateDeployment(
                prod=self.tt(env=[
                    self.PE(var='VAR', value='prod'),
                ],
                             inclusions={'prod'}),
                canary=self.tt(env=[
                    self.PE(var='VAR', value='canary'),
                ],
                               inclusions={'canary'}),
                canary_chance=5000))
コード例 #3
0
    def test_resolve_noname_deployment(self):
        poolcfg = self.parse("""
      task_template_deployment: {}
    """)

        self.assertIsNone(
            pools_config._resolve_task_template_deployments(
                self.ctx, {}, poolcfg.task_template_deployment))

        self.assertEqual([x.text for x in self.ctx.result().messages],
                         ['deployment[0]: has no name'])
コード例 #4
0
    def test_resolve_single_deployment(self):
        poolcfg = self.parse("""
      task_template: {name: "a" env: {var: "VAR" value: "1"} }
      task_template_deployment: {
        name: "std"
        prod: {include: "a"}
      }
      pool {
        task_template_deployment: "std"
      }
      pool {
        task_template_deployment_inline: {
          prod: {include: "a"}
          canary: {
            include: "a"
            env: {var: "WAT" value: "yes"}
          }
          canary_chance: 5000
        }
      }
    """)

        tmap = pools_config._resolve_task_template_inclusions(
            self.ctx, poolcfg.task_template)
        dmap = pools_config._resolve_task_template_deployments(
            self.ctx, tmap, poolcfg.task_template_deployment)

        self.assertEqual(
            pools_config.TaskTemplateDeployment(
                prod=self.tt(env=[self.PE(var='VAR', value='1')],
                             inclusions='a'),
                canary=None,
                canary_chance=0,
            ),
            pools_config._resolve_deployment(self.ctx, poolcfg.pool[0], tmap,
                                             dmap))

        self.assertEqual(
            pools_config.TaskTemplateDeployment(
                prod=self.tt(env=[self.PE(var='VAR', value='1')],
                             inclusions='a'),
                canary=self.tt(env=(self.PE(var='VAR', value='1'),
                                    self.PE(var='WAT', value='yes')),
                               inclusions={'a'}),
                canary_chance=5000,
            ),
            pools_config._resolve_deployment(self.ctx, poolcfg.pool[1], tmap,
                                             dmap))