예제 #1
0
 def test_run_success(self):
     with test_utils.RecipeDir() as recipe_dir:
         c, job = self.create_client_and_job(recipe_dir, "RunSuccess", sleep=2)
         self.set_counts()
         c.run(single=True)
         self.compare_counts(num_clients=1, num_events_completed=1, num_jobs_completed=1, active_branches=1)
         utils.check_complete_job(self, job)
예제 #2
0
    def test_deprecated_environment(self):
        with test_utils.RecipeDir() as recipe_dir:
            env_before = settings.ENVIRONMENT
            settings.ENVIRONMENT = {'FOO': 'bar'}

            c = self.create_client("/foo/bar")
            self.assertNotIn('FOO', c.get_environment())

            extra_script = 'if [ "$FOO" == "bar" ]; then\n'
            extra_script += '  echo "FOO=bar"\n'
            extra_script += 'fi\n'
            job = self.create_job(c,
                                  recipe_dir,
                                  "DeprecatedEnvironment",
                                  n_steps=1,
                                  sleep=2,
                                  extra_script=extra_script)

            self.set_counts()
            c.run(exit_if=lambda client: True)

            self.assertEqual('bar', c.get_environment('FOO'))

            self.compare_counts(num_clients=1,
                                num_events_completed=1,
                                num_jobs_completed=1,
                                active_branches=1)
            utils.check_complete_job(self,
                                     job,
                                     c,
                                     n_steps=1,
                                     extra_step_msg='FOO=bar\n')

            settings.ENVIRONMENT = env_before
예제 #3
0
 def test_bad_thread_join(self):
     with test_utils.RecipeDir() as recipe_dir:
         c, job = self.create_client_and_job(recipe_dir, "BadThreadJoin", sleep=2)
         c.thread_join_wait = 0
         self.set_counts()
         c.run()
         self.compare_counts(num_clients=1, num_events_completed=1, num_jobs_completed=1, active_branches=1)
         utils.check_complete_job(self, job)
    def test_manage_build_root(self):
        with test_utils.RecipeDir() as recipe_dir:
            temp_dir = tempfile.TemporaryDirectory()
            build_root = temp_dir.name + "/build_root"

            self.assertEqual(os.path.isdir(build_root), False)
            os.mkdir(build_root)
            self.assertEqual(os.path.isdir(build_root), True)

            manage_build_root_before = settings.MANAGE_BUILD_ROOT
            settings.MANAGE_BUILD_ROOT = True
            c = self.create_client(build_root)
            settings.MANAGE_BUILD_ROOT = manage_build_root_before

            self.assertEqual(c.get_build_root(), build_root)
            self.assertEqual(c.get_client_info('manage_build_root'), True)
            self.assertEqual(c.build_root_exists(), True)

            c.check_build_root()
            self.assertEqual(c.build_root_exists(), False)

            c.create_build_root()
            self.assertEqual(c.build_root_exists(), True)

            extra_script = 'if [ -d "$BUILD_ROOT" ]; then\n'
            extra_script += '  if [ ! -n "$(ls -A "$BUILD_ROOT")" ]; then\n'
            extra_script += '    echo BUILD_ROOT_EXISTS_EMPTY\n'
            extra_script += '    touch $BUILD_ROOT/build_root_test || exit 1\n'
            extra_script += '  fi\n'
            extra_script += 'fi\n'

            jobs = []
            jobs.append(self.create_job(c, recipe_dir, "ManageBuildRoot1", n_steps=1, sleep=2, extra_script=extra_script))
            jobs.append(self.create_job(c, recipe_dir, "ManageBuildRoot2", n_steps=1, sleep=2, extra_script=extra_script))
            jobs.append(self.create_job(c, recipe_dir, "ManageBuildRoot3", n_steps=1, sleep=2, extra_script=extra_script))

            self.set_counts()

            c.client_info["poll"] = 1
            def exit_create_build_root(client):
                self.assertEqual(client.build_root_exists(), False)
                client.create_build_root()
                self.assertEqual(client.build_root_exists(), True)
                return client.get_client_info('jobs_ran') == 3

            c.run(exit_if=exit_create_build_root)

            self.assertEqual(c.build_root_exists(), False)

            self.compare_counts(num_clients=1, num_events_completed=1, num_jobs_completed=3, active_branches=1)
            for job in jobs:
                utils.check_complete_job(self, job, c, n_steps=1, extra_step_msg='BUILD_ROOT_EXISTS_EMPTY\n')

            temp_dir.cleanup()
예제 #5
0
 def test_run_graceful(self):
     with test_utils.RecipeDir() as recipe_dir:
         c, job = self.create_client_and_job(recipe_dir, "Graceful", sleep=2)
         self.set_counts()
         c.client_info["poll"] = 1
         # graceful signal, should complete
         script = "sleep 3 && kill -USR2 %s" % os.getpid()
         proc = subprocess.Popen(script, shell=True, executable="/bin/bash", stdout=subprocess.PIPE)
         c.run()
         proc.wait()
         self.compare_counts(num_clients=1, num_events_completed=1, num_jobs_completed=1, active_branches=1)
         utils.check_complete_job(self, job)
         self.assertEqual(c.graceful_signal.triggered, True)
         self.assertEqual(c.cancel_signal.triggered, False)