Example #1
0
  def test_app_retry(self):
    """Test deploy app with retries."""
    self.deploy_failure_count = 1

    deploy._prod_deployment_helper('/config_dir',
                                   ['/windows.zip', '/mac.zip', '/linux.zip'])

    self.mock.run.assert_has_calls([
        mock.call(mock.ANY, 'deployment-manager', 'deployments', 'update',
                  'pubsub', '--config=./configs/test/pubsub/queues.yaml'),
        mock.call(mock.ANY, 'deployment-manager', 'deployments', 'update',
                  'bigquery', '--config=./configs/test/bigquery/datasets.yaml'),
    ])

    self.mock.execute.assert_has_calls([
        mock.call(
            'gcloud app deploy --no-stop-previous-version --quiet '
            '--project=test-clusterfuzz  '
            'src/appengine/index.yaml '
            'src/appengine/app.yaml '
            'src/appengine/cron.yaml '
            'src/appengine/cron-service.yaml',
            exit_on_error=False),
        mock.call(
            'gcloud app deploy --no-stop-previous-version --quiet '
            '--project=test-clusterfuzz  '
            'src/appengine/index.yaml '
            'src/appengine/app.yaml '
            'src/appengine/cron.yaml '
            'src/appengine/cron-service.yaml',
            exit_on_error=False),
        mock.call('gcloud app versions list --format=json '
                  '--project=test-clusterfuzz --service=default'),
        mock.call(
            'gcloud app versions delete --quiet --project=test-clusterfuzz '
            '--service=default v1'),
        mock.call('gcloud app versions list --format=json '
                  '--project=test-clusterfuzz --service=cron-service'),
        mock.call(
            'gcloud app versions delete --quiet --project=test-clusterfuzz '
            '--service=cron-service v1'),
        mock.call('gsutil cp /windows.zip gs://test-deployment-bucket/'
                  'windows.zip'),
        mock.call('gsutil cp /mac.zip gs://test-deployment-bucket/'
                  'mac.zip'),
        mock.call('gsutil cp /linux.zip gs://test-deployment-bucket/'
                  'linux.zip'),
        mock.call('gsutil cp -a public-read src/appengine/resources/'
                  'clusterfuzz-source.manifest '
                  'gs://test-deployment-bucket/' + self.manifest_target),
        mock.call('python butler.py run setup --config-dir /config_dir '
                  '--non-dry-run'),
    ])
    self._check_env_variables([
        'src/appengine/app.yaml',
        'src/appengine/cron-service.yaml',
    ])
    self._check_no_env_variables(
        ['src/appengine/cron.yaml', 'src/appengine/index.yaml'])
Example #2
0
    def test_app_retry_failure(self):
        """Test deploy app with retries (failure)."""
        self.deploy_failure_count = 4

        with self.assertRaises(SystemExit):
            deploy._prod_deployment_helper(
                '/config_dir', ['/windows.zip', '/mac.zip', '/linux.zip'],
                deploy_go=True)

        self.mock.run.assert_has_calls([
            mock.call(mock.ANY, 'deployment-manager', 'deployments', 'update',
                      'pubsub', '--config=./configs/test/pubsub/queues.yaml'),
            mock.call(mock.ANY, 'deployment-manager', 'deployments', 'update',
                      'bigquery',
                      '--config=./configs/test/bigquery/datasets.yaml'),
        ])

        self.mock.execute.assert_has_calls([
            mock.call(
                'gcloud app deploy --no-stop-previous-version --quiet '
                '--project=test-clusterfuzz  '
                'src/appengine/index.yaml '
                'src/appengine/app.yaml '
                'src/appengine/cron.yaml '
                'src/appengine/cron-service.yaml '
                'src/go/server/go-cron-service.yaml',
                exit_on_error=False),
            mock.call(
                'gcloud app deploy --no-stop-previous-version --quiet '
                '--project=test-clusterfuzz  '
                'src/appengine/index.yaml '
                'src/appengine/app.yaml '
                'src/appengine/cron.yaml '
                'src/appengine/cron-service.yaml '
                'src/go/server/go-cron-service.yaml',
                exit_on_error=False),
            mock.call(
                'gcloud app deploy --no-stop-previous-version --quiet '
                '--project=test-clusterfuzz  '
                'src/appengine/index.yaml '
                'src/appengine/app.yaml '
                'src/appengine/cron.yaml '
                'src/appengine/cron-service.yaml '
                'src/go/server/go-cron-service.yaml',
                exit_on_error=False),
            mock.call(
                'gcloud app deploy --no-stop-previous-version --quiet '
                '--project=test-clusterfuzz  '
                'src/appengine/index.yaml '
                'src/appengine/app.yaml '
                'src/appengine/cron.yaml '
                'src/appengine/cron-service.yaml '
                'src/go/server/go-cron-service.yaml',
                exit_on_error=False),
        ])
Example #3
0
    def test_app_retry_failure(self):
        """Test deploy app with retries (failure)."""
        self.deploy_failure_count = 4

        with self.assertRaises(SystemExit):
            deploy._prod_deployment_helper(
                "/config_dir",
                ["/windows.zip", "/mac.zip", "/linux.zip"],
                deploy_go=True,
            )

        self.mock.run.assert_has_calls([
            mock.call(
                mock.ANY,
                "deployment-manager",
                "deployments",
                "update",
                "pubsub",
                "--config=./configs/test/pubsub/queues.yaml",
            ),
            mock.call(
                mock.ANY,
                "deployment-manager",
                "deployments",
                "update",
                "bigquery",
                "--config=./configs/test/bigquery/datasets.yaml",
            ),
        ])

        self.mock.execute.assert_has_calls([
            mock.call(
                "gcloud app deploy --no-stop-previous-version --quiet "
                "--project=test-clusterfuzz  "
                "src/appengine/index.yaml "
                "src/appengine/app.yaml "
                "src/appengine/cron.yaml "
                "src/appengine/cron-service.yaml "
                "src/go/server/go-cron-service.yaml",
                exit_on_error=False,
            ),
            mock.call(
                "gcloud app deploy --no-stop-previous-version --quiet "
                "--project=test-clusterfuzz  "
                "src/appengine/index.yaml "
                "src/appengine/app.yaml "
                "src/appengine/cron.yaml "
                "src/appengine/cron-service.yaml "
                "src/go/server/go-cron-service.yaml",
                exit_on_error=False,
            ),
            mock.call(
                "gcloud app deploy --no-stop-previous-version --quiet "
                "--project=test-clusterfuzz  "
                "src/appengine/index.yaml "
                "src/appengine/app.yaml "
                "src/appengine/cron.yaml "
                "src/appengine/cron-service.yaml "
                "src/go/server/go-cron-service.yaml",
                exit_on_error=False,
            ),
            mock.call(
                "gcloud app deploy --no-stop-previous-version --quiet "
                "--project=test-clusterfuzz  "
                "src/appengine/index.yaml "
                "src/appengine/app.yaml "
                "src/appengine/cron.yaml "
                "src/appengine/cron-service.yaml "
                "src/go/server/go-cron-service.yaml",
                exit_on_error=False,
            ),
        ])
Example #4
0
    def test_app_retry(self):
        """Test deploy app with retries."""
        self.deploy_failure_count = 1

        deploy._prod_deployment_helper(
            "/config_dir", ["/windows.zip", "/mac.zip", "/linux.zip"],
            deploy_go=True)

        self.mock.run.assert_has_calls([
            mock.call(
                mock.ANY,
                "deployment-manager",
                "deployments",
                "update",
                "pubsub",
                "--config=./configs/test/pubsub/queues.yaml",
            ),
            mock.call(
                mock.ANY,
                "deployment-manager",
                "deployments",
                "update",
                "bigquery",
                "--config=./configs/test/bigquery/datasets.yaml",
            ),
        ])

        self.mock.execute.assert_has_calls([
            mock.call(
                "gcloud app deploy --no-stop-previous-version --quiet "
                "--project=test-clusterfuzz  "
                "src/appengine/index.yaml "
                "src/appengine/app.yaml "
                "src/appengine/cron.yaml "
                "src/appengine/cron-service.yaml "
                "src/go/server/go-cron-service.yaml",
                exit_on_error=False,
            ),
            mock.call(
                "gcloud app deploy --no-stop-previous-version --quiet "
                "--project=test-clusterfuzz  "
                "src/appengine/index.yaml "
                "src/appengine/app.yaml "
                "src/appengine/cron.yaml "
                "src/appengine/cron-service.yaml "
                "src/go/server/go-cron-service.yaml",
                exit_on_error=False,
            ),
            mock.call("gcloud app versions list --format=json "
                      "--project=test-clusterfuzz --service=default"),
            mock.call(
                "gcloud app versions delete --quiet --project=test-clusterfuzz "
                "--service=default v1"),
            mock.call("gcloud app versions list --format=json "
                      "--project=test-clusterfuzz --service=cron-service"),
            mock.call(
                "gcloud app versions delete --quiet --project=test-clusterfuzz "
                "--service=cron-service v1"),
            mock.call("gcloud app versions list --format=json "
                      "--project=test-clusterfuzz --service=go-cron-service"),
            mock.call(
                "gcloud app versions delete --quiet --project=test-clusterfuzz "
                "--service=go-cron-service v1"),
            mock.call("gsutil cp /windows.zip gs://test-deployment-bucket/"
                      "windows.zip"),
            mock.call("gsutil cp /mac.zip gs://test-deployment-bucket/"
                      "mac.zip"),
            mock.call("gsutil cp /linux.zip gs://test-deployment-bucket/"
                      "linux.zip"),
            mock.call(
                "gsutil cp -a public-read src/appengine/resources/"
                "clusterfuzz-source.manifest "
                "gs://test-deployment-bucket/clusterfuzz-source.manifest"),
            mock.call("python butler.py run setup --config-dir /config_dir "
                      "--non-dry-run"),
        ])
        self._check_env_variables([
            "src/appengine/app.yaml",
            "src/appengine/cron-service.yaml",
            "src/go/server/go-cron-service.yaml",
        ])
        self._check_no_env_variables(
            ["src/appengine/cron.yaml", "src/appengine/index.yaml"])