def setup_method(self, method): # Non-temp directories build_dir = path() / "build" top_dir = path() / ".." / ".." / ".." etc_dir = top_dir / "etc" # Necessary fiels prefs_file = build_dir / "prefs.class" internal_cfg = etc_dir / "internal.cfg" master_cfg = etc_dir / "master.cfg" # Temp directories tmp_dir = create_path(folder=True) tmp_etc_dir = tmp_dir / "etc" tmp_grid_dir = tmp_etc_dir / "grid" tmp_lib_dir = tmp_dir / "lib" tmp_var_dir = tmp_dir / "var" # Setup tmp dir [x.makedirs() for x in (tmp_grid_dir, tmp_lib_dir, tmp_var_dir)] prefs_file.copy(tmp_lib_dir) master_cfg.copy(tmp_etc_dir) internal_cfg.copy(tmp_etc_dir) # Other setup self.cli = MockCLI() self.cli.dir = tmp_dir self.cli.register("a", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST")
def setup_method(self, tmpdir, monkeypatch): # Other setup self.cli = MockCLI() monkeypatch.setenv('OMERODIR', str(tmpdir)) self.cli.dir = tmpdir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST")
def setup_method(self, method): # Non-temp directories build_dir = path() / "build" top_dir = path() / ".." / ".." / ".." etc_dir = top_dir / "etc" # Necessary fiels prefs_file = build_dir / "prefs.class" internal_cfg = etc_dir / "internal.cfg" master_cfg = etc_dir / "master.cfg" # Temp directories tmp_dir = create_path(folder=True) tmp_etc_dir = tmp_dir / "etc" tmp_grid_dir = tmp_etc_dir / "grid" tmp_lib_dir = tmp_dir / "lib" tmp_var_dir = tmp_dir / "var" # Setup tmp dir [x.makedirs() for x in (tmp_grid_dir, tmp_lib_dir, tmp_var_dir)] prefs_file.copy(tmp_lib_dir) master_cfg.copy(tmp_etc_dir) internal_cfg.copy(tmp_etc_dir) # Other setup self.cli = MockCLI() self.cli.dir = tmp_dir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST")
def setup_method(self, method): self.cli = MockCLI() self.cli.register("db", DatabaseControl, "TEST") dir = path(__file__) / ".." / ".." / ".." / ".." / ".." / ".." /\ ".." / "dist" # FIXME: should not be hard-coded dir = dir.abspath() cfg = dir / "etc" / "omero.properties" cfg = cfg.abspath() self.cli.dir = dir self.data = {} for line in cfg.text().split("\n"): line = line.strip() for x in ("version", "patch"): key = "omero.db." + x if line.startswith(key): self.data[x] = line[len(key) + 1:] self.file = create_path()
class TestAdminCommandsFailFast(object): # These commands should fail immediately so there's no need for the full # setup @pytest.fixture(autouse=True) def setup_method(self, tmpdir, monkeypatch): # Other setup self.cli = MockCLI() monkeypatch.setenv('OMERODIR', str(tmpdir)) self.cli.dir = tmpdir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST") @pytest.mark.parametrize("command", ["start", "stop", "restart"]) def testCheckServiceManagerEnv(self, command): self.cli.invoke([ "config", "set", "omero.server.servicemanager.checkenv", "TESTOMERO_ADMIN_SERVICEMANAGER_CHECKENV" ], strict=True) self.cli.invoke(["admin", command, "--force-rewrite"], strict=False) assert self.cli.getStderr()[-1] == ( "ERROR: OMERO is configured to run under a service manager which " "should also set TESTOMERO_ADMIN_SERVICEMANAGER_CHECKENV")
def setup_method(self, tmpadmindir): # Other setup self.cli = MockCLI() self.cli.dir = tmpadmindir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST")
class TestAdmin(object): @pytest.fixture(autouse=True) def setup_method(self, tmpadmindir): # Other setup self.cli = MockCLI() self.cli.dir = tmpadmindir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST") def teardown_method(self, method): self.cli.teardown_method(method) def invoke(self, string, fails=False): try: self.cli.invoke(string, strict=True) if fails: assert False, "Failed to fail" except: if not fails: raise def testMain(self): try: self.invoke("") except NonZeroReturnCode: # Command-loop not implemented pass # # Async first because simpler # def XtestStartAsync(self): # DISABLED: https://trac.openmicroscopy.org/ome/ticket/10584 self.cli.addCall(0) self.cli.checksIceVersion() self.cli.checksStatus(1) # I.e. not running self.invoke("admin startasync") self.cli.assertCalled() self.cli.assertStderr( ['No descriptor given. Using etc/grid/default.xml']) def testStopAsyncNoConfig(self): self.invoke("admin stopasync", fails=True) self.cli.assertStderr([MISSING_CONFIGURATION_MSG + FORCE_REWRITE_MSG]) self.cli.assertStdout([]) def testStopAsyncRunning(self): self.invoke("admin rewrite") self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.invoke("admin stopasync") self.cli.assertStderr([]) self.cli.assertStdout([]) def testStopAsyncRunningForceRewrite(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.invoke("admin stopasync --force-rewrite") self.cli.assertStderr([]) self.cli.assertStdout([]) def testStopAsyncNotRunning(self): self.invoke("admin rewrite") self.cli.checksStatus(1) # I.e. not running self.invoke("admin stopasync", fails=True) self.cli.assertStderr(["Server not running"]) self.cli.assertStdout([]) def testStopAsyncNotRunningForceRewrite(self): self.cli.checksStatus(1) # I.e. not running self.invoke("admin stopasync --force-rewrite", fails=True) self.cli.assertStderr(["Server not running"]) self.cli.assertStdout([]) def testStopNoConfig(self): self.invoke("admin stop", fails=True) self.cli.assertStderr([MISSING_CONFIGURATION_MSG + FORCE_REWRITE_MSG]) self.cli.assertStdout([]) def testStopNoConfigForceRewrite(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.cli.checksStatus(1) # I.e. not running self.invoke("admin stop --force-rewrite") self.cli.assertStderr([]) self.cli.assertStdout(['Waiting on shutdown. Use CTRL-C to exit']) def testStop(self): self.invoke("admin rewrite") self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.cli.checksStatus(1) # I.e. not running self.invoke("admin stop") self.cli.assertStderr([]) self.cli.assertStdout(['Waiting on shutdown. Use CTRL-C to exit']) # # STATUS # def testDiagnostics(self): self.invoke("admin diagnostics") def testStatusNoConfig(self): self.invoke("admin status", fails=True) self.cli.assertStderr([MISSING_CONFIGURATION_MSG + REWRITE_MSG]) self.cli.assertStdout([]) def testStatusNodeFails(self): self.invoke("admin rewrite") # Setup the call to omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(1) self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "admin status") def testStatusSMFails(self): self.invoke("admin rewrite") # Setup the call to omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["admin"] control._intcfg = lambda: "" def sm(*args): raise Exception("unknown") control.session_manager = sm self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "admin status") def testStatusPasses(self, tmpdir, monkeypatch): self.invoke("admin rewrite") ice_config = old_div(tmpdir, 'ice.config') ice_config.write('omero.host=localhost\nomero.port=4064') monkeypatch.setenv("ICE_CONFIG", ice_config) # Setup the call to omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["admin"] control._intcfg = lambda: "" def sm(*args): class A(object): def create(self, *args): raise omero.WrappedCreateSessionException() return A() control.session_manager = sm self.cli.mox.ReplayAll() self.invoke("admin status") assert 0 == self.cli.rv
class TestAdmin(object): def setup_method(self, method): # Non-temp directories build_dir = path() / "build" top_dir = path() / ".." / ".." / ".." etc_dir = top_dir / "etc" # Necessary fiels prefs_file = build_dir / "prefs.class" internal_cfg = etc_dir / "internal.cfg" master_cfg = etc_dir / "master.cfg" # Temp directories tmp_dir = create_path(folder=True) tmp_etc_dir = tmp_dir / "etc" tmp_grid_dir = tmp_etc_dir / "grid" tmp_lib_dir = tmp_dir / "lib" tmp_var_dir = tmp_dir / "var" # Setup tmp dir [x.makedirs() for x in (tmp_grid_dir, tmp_lib_dir, tmp_var_dir)] prefs_file.copy(tmp_lib_dir) master_cfg.copy(tmp_etc_dir) internal_cfg.copy(tmp_etc_dir) # Other setup self.cli = MockCLI() self.cli.dir = tmp_dir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST") def teardown_method(self, method): self.cli.teardown_method(method) def invoke(self, string, fails=False): try: self.cli.invoke(string, strict=True) if fails: assert False, "Failed to fail" except: if not fails: raise def testMain(self): try: self.invoke("") except NonZeroReturnCode: # Command-loop not implemented pass # # Async first because simpler # def XtestStartAsync(self): # DISABLED: https://trac.openmicroscopy.org.uk/ome/ticket/10584 self.cli.addCall(0) self.cli.checksIceVersion() self.cli.checksStatus(1) # I.e. not running self.invoke("admin startasync") self.cli.assertCalled() self.cli.assertStderr( ['No descriptor given. Using etc/grid/default.xml']) def testStopAsyncRunning(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.invoke("admin stopasync") self.cli.assertStderr([]) self.cli.assertStdout([]) def testStopAsyncNotRunning(self): self.cli.checksStatus(1) # I.e. not running self.invoke("admin stopasync", fails=True) self.cli.assertStderr(["Server not running"]) self.cli.assertStdout([]) def testStop(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.cli.checksStatus(1) # I.e. not running self.invoke("admin stop") self.cli.assertStderr([]) self.cli.assertStdout(['Waiting on shutdown. Use CTRL-C to exit']) # # STATUS # def testStatusNodeFails(self): # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(1) self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "admin status") def testStatusSMFails(self): # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["admin"] control._intcfg = lambda: "" def sm(*args): raise Exception("unknown") control.session_manager = sm self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "admin status") def testStatusPasses(self): # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["admin"] control._intcfg = lambda: "" def sm(*args): class A(object): def create(self, *args): raise omero.WrappedCreateSessionException() return A() control.session_manager = sm self.cli.mox.ReplayAll() self.invoke("admin status") assert 0 == self.cli.rv
class TestAdmin(object): @pytest.fixture(autouse=True) def setup_method(self, tmpadmindir): # Other setup self.cli = MockCLI() self.cli.dir = tmpadmindir self.cli.register("admin", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST") def teardown_method(self, method): self.cli.teardown_method(method) def invoke(self, string, fails=False): try: self.cli.invoke(string, strict=True) if fails: assert False, "Failed to fail" except: if not fails: raise def testMain(self): try: self.invoke("") except NonZeroReturnCode: # Command-loop not implemented pass # # Async first because simpler # def XtestStartAsync(self): # DISABLED: https://trac.openmicroscopy.org.uk/ome/ticket/10584 self.cli.addCall(0) self.cli.checksIceVersion() self.cli.checksStatus(1) # I.e. not running self.invoke("admin startasync") self.cli.assertCalled() self.cli.assertStderr( ['No descriptor given. Using etc/grid/default.xml']) def testStopAsyncNoConfig(self): self.invoke("admin stopasync", fails=True) self.cli.assertStderr([MISSING_CONFIGURATION_MSG + FORCE_REWRITE_MSG]) self.cli.assertStdout([]) def testStopAsyncRunning(self): self.invoke("admin rewrite") self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.invoke("admin stopasync") self.cli.assertStderr([]) self.cli.assertStdout([]) def testStopAsyncRunningForceRewrite(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.invoke("admin stopasync --force-rewrite") self.cli.assertStderr([]) self.cli.assertStdout([]) def testStopAsyncNotRunning(self): self.invoke("admin rewrite") self.cli.checksStatus(1) # I.e. not running self.invoke("admin stopasync", fails=True) self.cli.assertStderr(["Server not running"]) self.cli.assertStdout([]) def testStopAsyncNotRunningForceRewrite(self): self.cli.checksStatus(1) # I.e. not running self.invoke("admin stopasync --force-rewrite", fails=True) self.cli.assertStderr(["Server not running"]) self.cli.assertStdout([]) def testStopNoConfig(self): self.invoke("admin stop", fails=True) self.cli.assertStderr([MISSING_CONFIGURATION_MSG + FORCE_REWRITE_MSG]) self.cli.assertStdout([]) def testStopNoConfigForceRewrite(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.cli.checksStatus(1) # I.e. not running self.invoke("admin stop --force-rewrite") self.cli.assertStderr([]) self.cli.assertStdout(['Waiting on shutdown. Use CTRL-C to exit']) def testStop(self): self.invoke("admin rewrite") self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.cli.checksStatus(1) # I.e. not running self.invoke("admin stop") self.cli.assertStderr([]) self.cli.assertStdout(['Waiting on shutdown. Use CTRL-C to exit']) # # STATUS # def testStatusNoConfig(self): self.invoke("admin status", fails=True) self.cli.assertStderr([MISSING_CONFIGURATION_MSG + REWRITE_MSG]) self.cli.assertStdout([]) def testStatusNodeFails(self): self.invoke("admin rewrite") # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(1) self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "admin status") def testStatusSMFails(self): self.invoke("admin rewrite") # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["admin"] control._intcfg = lambda: "" def sm(*args): raise Exception("unknown") control.session_manager = sm self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "admin status") def testStatusPasses(self, tmpdir, monkeypatch): self.invoke("admin rewrite") ice_config = tmpdir / 'ice.config' ice_config.write('omero.host=localhost\nomero.port=4064') monkeypatch.setenv("ICE_CONFIG", ice_config) # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["admin"] control._intcfg = lambda: "" def sm(*args): class A(object): def create(self, *args): raise omero.WrappedCreateSessionException() return A() control.session_manager = sm self.cli.mox.ReplayAll() self.invoke("admin status") assert 0 == self.cli.rv
class TestAdmin(object): def setup_method(self, method): # Non-temp directories build_dir = path() / "build" top_dir = path() / ".." / ".." / ".." etc_dir = top_dir / "etc" # Necessary fiels prefs_file = build_dir / "prefs.class" internal_cfg = etc_dir / "internal.cfg" master_cfg = etc_dir / "master.cfg" # Temp directories tmp_dir = create_path(folder=True) tmp_etc_dir = tmp_dir / "etc" tmp_grid_dir = tmp_etc_dir / "grid" tmp_lib_dir = tmp_dir / "lib" tmp_var_dir = tmp_dir / "var" # Setup tmp dir [x.makedirs() for x in (tmp_grid_dir, tmp_lib_dir, tmp_var_dir)] prefs_file.copy(tmp_lib_dir) master_cfg.copy(tmp_etc_dir) internal_cfg.copy(tmp_etc_dir) # Other setup self.cli = MockCLI() self.cli.dir = tmp_dir self.cli.register("a", AdminControl, "TEST") self.cli.register("config", PrefsControl, "TEST") def teardown_method(self, method): self.cli.teardown_method(method) def invoke(self, string, fails=False): try: self.cli.invoke(string, strict=True) if fails: assert False, "Failed to fail" except: if not fails: raise def testMain(self): try: self.invoke("") except NonZeroReturnCode: # Command-loop not implemented pass # # Async first because simpler # def XtestStartAsync(self): # DISABLED: https://trac.openmicroscopy.org.uk/ome/ticket/10584 self.cli.addCall(0) self.cli.checksIceVersion() self.cli.checksStatus(1) # I.e. not running self.invoke("a startasync") self.cli.assertCalled() self.cli.assertStderr( ['No descriptor given. Using etc/grid/default.xml']) def testStopAsyncRunning(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.invoke("a stopasync") self.cli.assertStderr([]) self.cli.assertStdout([]) def testStopAsyncNotRunning(self): self.cli.checksStatus(1) # I.e. not running self.invoke("a stopasync", fails=True) self.cli.assertStderr(["Server not running"]) self.cli.assertStdout([]) def testStop(self): self.cli.checksStatus(0) # I.e. running self.cli.addCall(0) self.cli.checksStatus(1) # I.e. not running self.invoke("a stop") self.cli.assertStderr([]) self.cli.assertStdout(['Waiting on shutdown. Use CTRL-C to exit']) # # STATUS # def testStatusNodeFails(self): # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(1) self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "a status") def testStatusSMFails(self): # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["a"] control._intcfg = lambda: "" def sm(*args): raise Exception("unknown") control.session_manager = sm self.cli.mox.ReplayAll() pytest.raises(NonZeroReturnCode, self.invoke, "a status") def testStatusPasses(self): # Setup the call to bin/omero admin ice node popen = self.cli.createPopen() popen.wait().AndReturn(0) # Setup the call to session manager control = self.cli.controls["a"] control._intcfg = lambda: "" def sm(*args): class A(object): def create(self, *args): raise omero.WrappedCreateSessionException() return A() control.session_manager = sm self.cli.mox.ReplayAll() self.invoke("a status") assert 0 == self.cli.rv
class TestDatabase(object): def setup_method(self, method): self.cli = MockCLI() self.cli.register("db", DatabaseControl, "TEST") dir = path(__file__) / ".." / ".." / ".." / ".." / ".." / ".." /\ ".." / "dist" # FIXME: should not be hard-coded dir = dir.abspath() cfg = dir / "etc" / "omero.properties" cfg = cfg.abspath() self.cli.dir = dir self.data = {} for line in cfg.text().split("\n"): line = line.strip() for x in ("version", "patch"): key = "omero.db." + x if line.startswith(key): self.data[x] = line[len(key) + 1:] self.file = create_path() def teardown_method(self, method): self.file.remove() def script(self, string, strict=True): string = string % self.data self.cli.invoke("db script -f %s %s" % (self.file, string), strict=strict) def password(self, string, strict=True): self.cli.invoke("db password " + string % self.data, strict=strict) def testBadVersionDies(self): self.expectPassword("pw") self.expectConfirmation("pw") pytest.raises(NonZeroReturnCode, self.script, "NONE NONE pw") def testPasswordIsAskedForAgainIfDiffer(self): self.expectPassword("ome") self.expectConfirmation("bad") self.expectPassword("ome") self.expectConfirmation("ome") self.script("'' ''") def testPasswordIsAskedForAgainIfEmpty(self): self.expectPassword("") self.expectPassword("ome") self.expectConfirmation("ome") self.script("%(version)s %(patch)s") def testPassword(self): self.expectPassword("ome") self.expectConfirmation("ome") self.password("") def testAutomatedPassword(self): self.password("ome") def testScript(self): self.expectVersion(self.data["version"]) self.expectPatch(self.data["patch"]) self.expectPassword("ome") self.expectConfirmation("ome") self.script("") def testAutomatedScript1(self): # This should not be asked for, but ignoring for the moment self.expectVersion(self.data["version"]) self.expectPatch(self.data["patch"]) self.expectPassword("ome") self.expectConfirmation("ome") self.script("%(version)s") def testAutomatedScript2(self): self.expectPassword("ome") self.expectConfirmation("ome") self.script("%(version)s %(patch)s") def testAutomatedScript3(self): self.script("%(version)s %(patch)s ome") def expectPassword(self, pw, user="******"): self.cli.expect("Please enter password for OMERO %s user: "******"root"): self.cli.expect("Please re-enter password for OMERO %s user: "******"Please enter omero.db.version [%s]: " % self.data["version"], version) def expectPatch(self, patch): self.cli.expect( "Please enter omero.db.patch [%s]: " % self.data["patch"], patch)