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)
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)
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)
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)
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)
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()
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)
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()
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)
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)
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)