def test_hss_solver_config_override(self):
     with isolated_environ(add={
             'DWAVE_FEATURE_FLAGS':
             '{"hss_solver_config_override": true}'
     }):
         self.assertTrue(FeatureFlags.hss_solver_config_override)
     with isolated_environ(remove=('DWAVE_FEATURE_FLAGS', )):
         self.assertFalse(FeatureFlags.hss_solver_config_override)
    def test_remove(self):
        # set var to val in "global" env
        self.setval()
        self.assertEqual(os.getenv(self.var), self.val)

        # ensure isolated env removes var
        with isolated_environ(remove={self.var: self.val}):
            self.assertEqual(os.getenv(self.var), None)
        with isolated_environ(remove=[self.var]):
            self.assertEqual(os.getenv(self.var), None)
        with isolated_environ(remove=set([self.var])):
            self.assertEqual(os.getenv(self.var), None)

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), self.val)
Beispiel #3
0
    def test_isolation(self):
        # set var to val in "global" env
        self.setval()
        self.assertEqual(os.getenv(self.var), self.val)

        # ensure isolated env stores modified value
        def test():
            os.environ[self.var] = self.alt
            self.assertEqual(os.getenv(self.var), self.alt)

        with isolated_environ():
            test()

        isolated_environ()(test)()

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), self.val)
Beispiel #4
0
    def test_add(self):
        # clear var in "global" env
        self.clear()
        self.assertEqual(os.getenv(self.var), None)

        # ensure isolated env adds var
        args = ({self.var: self.val}, )

        def test():
            self.assertEqual(os.getenv(self.var), self.val)

        with isolated_environ(*args):
            test()

        isolated_environ(*args)(test)()

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), None)
Beispiel #5
0
    def test_empty(self):
        # set var to val in "global" env
        self.setval()
        self.assertEqual(os.getenv(self.var), self.val)

        # ensure isolated env starts empty
        kwargs = dict(empty=True)

        def test():
            self.assertEqual(os.getenv(self.var), None)

        with isolated_environ(**kwargs):
            test()

        isolated_environ(**kwargs)(test)()

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), self.val)
Beispiel #6
0
    def test_update(self):
        # set var to val in "global" env
        self.setval()
        self.assertEqual(os.getenv(self.var), self.val)

        # ensure isolated env has modified value
        args = ({self.var: self.alt}, )

        def test():
            self.assertEqual(os.getenv(self.var), self.alt)

        with isolated_environ(*args):
            test()

        isolated_environ(*args)(test)()

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), self.val)
 def test_new_negative(self):
     # given invalid solver spec in env, init fails
     solver = json.dumps(dict(qpu=True))
     with isolated_environ(add={'DWAVE_API_SOLVER': solver},
                           remove=('DWAVE_FEATURE_FLAGS', )):
         with self.assertRaises(SolverNotFoundError):
             try:
                 sampler = self.sampler_cls()
             except (ValueError, ConfigFileError):
                 raise unittest.SkipTest("config error")
    def test_update(self):
        # set var to val in "global" env
        self.setval()
        self.assertEqual(os.getenv(self.var), self.val)

        # ensure isolated env has modified value
        with isolated_environ({self.var: self.alt}):
            self.assertEqual(os.getenv(self.var), self.alt)

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), self.val)
    def test_add(self):
        # clear var in "global" env
        self.clear()
        self.assertEqual(os.getenv(self.var), None)

        # ensure isolated env adds var
        with isolated_environ({self.var: self.val}):
            self.assertEqual(os.getenv(self.var), self.val)

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), None)
    def test_empty(self):
        # set var to val in "global" env
        self.setval()
        self.assertEqual(os.getenv(self.var), self.val)

        # ensure isolated env starts empty
        with isolated_environ(empty=True):
            self.assertEqual(os.getenv(self.var), None)

        # ensure "global" env is restored
        self.assertEqual(os.getenv(self.var), self.val)
Beispiel #11
0
    def test_remove_dwave(self):
        # set var to val in "global" env
        var = 'DWAVE_TEST'
        val = 'test'
        os.environ[var] = val

        # ensure isolated env removes dwave var
        with isolated_environ(remove_dwave=True):
            self.assertEqual(os.getenv(var), None)

        # ensure "global" env is restored
        self.assertEqual(os.getenv(var), val)
    def test_new_positive(self):
        # given valid solver spec in env, init succeeds
        solver = json.dumps(self.sampler_cls.default_solver)
        with isolated_environ(add={'DWAVE_API_SOLVER': solver},
                              remove=('DWAVE_FEATURE_FLAGS', )):
            try:
                sampler = self.sampler_cls()
            except (ValueError, ConfigFileError):
                raise unittest.SkipTest("config error")

            self.assertIn(self.problem_type,
                          sampler.solver.supported_problem_types)

        sampler.client.close()
Beispiel #13
0
    def test_update(self, name, extra_opts, inputs):
        config_file = 'dwave.conf'
        profile = 'profile'

        runner = CliRunner(mix_stderr=False)
        with runner.isolated_filesystem():
            # create config
            config_body = '\n'.join(f"{k} = old-{v}"
                                    for k, v in inputs.items())
            with open(config_file, 'w') as fp:
                fp.write(f"[{profile}]\n{config_body}")

            # verify config before update
            with isolated_environ(remove_dwave=True):
                config = load_config(config_file=config_file)
                for var, val in inputs.items():
                    self.assertEqual(config.get(var), f"old-{val}")

            # update config
            result = runner.invoke(cli,
                                   [
                                       'config',
                                       'create',
                                       '-f',
                                       config_file,
                                       '-p',
                                       profile,
                                   ] + extra_opts,
                                   input='\n'.join('' if v is None else v
                                                   for v in inputs.values()))
            self.assertEqual(result.exit_code, 0)

            # verify config updated
            with isolated_environ(remove_dwave=True):
                config = load_config(config_file=config_file)
                for var, val in inputs.items():
                    self.assertEqual(config.get(var), val)
    def test_remove_dwave(self):
        # set var to val in "global" env
        dw1, dw2 = 'DWAVE_TEST', 'DW_INTERNAL__TEST'
        val = 'test'
        os.environ[dw1] = val
        os.environ[dw2] = val

        # ensure isolated env removes dwave var
        with isolated_environ(remove_dwave=True):
            self.assertEqual(os.getenv(dw1), None)
            self.assertEqual(os.getenv(dw2), None)

        # ensure "global" env is restored
        self.assertEqual(os.getenv(dw1), val)
        self.assertEqual(os.getenv(dw2), val)
Beispiel #15
0
 def test_base(self):
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': '{"x": true}'}):
         self.assertTrue(FeatureFlags.get('x'))
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': '{"x": false}'}):
         self.assertFalse(FeatureFlags.get('x'))
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': '{"x": 0}'}):
         self.assertFalse(FeatureFlags.get('x'))
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': '{"x": 1}'}):
         self.assertTrue(FeatureFlags.get('x'))
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': '{"x": error}'}):
         self.assertFalse(FeatureFlags.get('x'))
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': '{"y": true}'}):
         self.assertFalse(FeatureFlags.get('x'))
     with isolated_environ(add={'DWAVE_FEATURE_FLAGS': ''}):
         self.assertFalse(FeatureFlags.get('x'))
     with isolated_environ(remove=('DWAVE_FEATURE_FLAGS', )):
         self.assertFalse(FeatureFlags.get('x'))
    def test_old(self):
        # given invalid solver spec in env, init succeeds
        solver = json.dumps(dict(qpu=True))
        flags = json.dumps(dict(hss_solver_config_override=True))
        with isolated_environ(add={
                'DWAVE_API_SOLVER': solver,
                'DWAVE_FEATURE_FLAGS': flags
        }):
            try:
                sampler = self.sampler_cls()
            except (ValueError, ConfigFileError):
                raise unittest.SkipTest("config error")

            self.assertIn(self.problem_type,
                          sampler.solver.supported_problem_types)

        sampler.client.close()
Beispiel #17
0
    def test_default_flows(self, name, extra_opts, inputs):
        runner = CliRunner(mix_stderr=False)
        with runner.isolated_filesystem():
            with mock.patch("dwave.cloud.config.get_configfile_paths",
                            lambda: ['dwave.conf']):
                with mock.patch("dwave.cloud.utils.input", side_effect=inputs):
                    result = runner.invoke(
                        cli, ['config', 'create'] + extra_opts,
                        input='\n'.join('' if v is None else v
                                        for v in inputs.values()))
                    self.assertEqual(result.exit_code, 0)

                # load and verify config
                with isolated_environ(remove_dwave=True):
                    config = load_config()
                    for var, val in inputs.items():
                        if val:  # skip empty default confirmations
                            self.assertEqual(config.get(var), val)
Beispiel #18
0
    def test_create(self, name, extra_opts, inputs):
        config_file = 'path/to/dwave.conf'
        profile = 'profile'

        runner = CliRunner(mix_stderr=False)
        with runner.isolated_filesystem():
            result = runner.invoke(cli,
                                   [
                                       'config', 'create', '--config-file',
                                       config_file, '--profile', profile
                                   ] + extra_opts,
                                   input='\n'.join('' if v is None else v
                                                   for v in inputs.values()))
            self.assertEqual(result.exit_code, 0)

            # load and verify config
            with isolated_environ(remove_dwave=True):
                config = load_config(config_file, profile=profile)
                for var, val in inputs.items():
                    self.assertEqual(config.get(var), val)
Beispiel #19
0
    def test_config_create(self):
        config_file = 'dwave.conf'
        profile = 'profile'
        values = 'endpoint token client solver'.split()

        runner = CliRunner()
        with runner.isolated_filesystem():
            # create config file through simulated user input in `dwave configure`
            touch(config_file)
            with mock.patch("dwave.cloud.utils.input", side_effect=values):
                result = runner.invoke(cli, [
                    'config', 'create', '--config-file', config_file, '--profile', profile
                ], input='\n'.join(values))
                self.assertEqual(result.exit_code, 0)

            # load and verify config
            with isolated_environ(remove_dwave=True):
                config = load_config(config_file, profile=profile)
                for val in values:
                    self.assertEqual(config.get(val), val)