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'])
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), ])
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, ), ])
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"])