def test_save_flowsheet(flash_model): srv = model_server.FlowsheetServer() with pytest.raises(errors.ProcessingError): srv.save_flowsheet("oscar", {}) fs = flash_model.fs srv.add_flowsheet("oscar", fs, persist.MemoryDataStore()) with pytest.raises(errors.ProcessingError): srv.save_flowsheet("oscar", {"invalid": pytest})
def test_compare_and_str(tmp_path): p = tmp_path / "test.json" fstore = persist.FileDataStore(p) mstore = persist.MemoryDataStore() assert fstore != mstore assert fstore == fstore assert mstore == mstore str(fstore) str(mstore)
def test_datastoremanager_create_add(tmp_path): p = tmp_path / "test.json" fstore = persist.FileDataStore(p) mstore = persist.MemoryDataStore() dsm = persist.DataStoreManager() assert dsm.add("memory", mstore) assert not dsm.add("memory", mstore) # idempotence assert dsm.add("file", fstore) assert not dsm.add("file", fstore) # idempotence assert dsm.add("file", mstore) # changed type assert dsm.add("file", fstore) # changed type again assert not dsm.add("file", fstore) # idempotence
def test_update_flowsheet(flash_model): srv = model_server.FlowsheetServer() with pytest.raises(errors.FlowsheetUnknown): srv.update_flowsheet("oscar") # add a flowsheet, fs = flash_model.fs srv.add_flowsheet("oscar", fs, persist.MemoryDataStore()) # Put in a bad value, DEPENDS ON PROTECTED ATTR srv._flowsheets["oscar"] = None with pytest.raises(errors.ProcessingError): srv.update_flowsheet("oscar") # Delete it, DEPENDS ON PROTECTED ATTR del srv._flowsheets["oscar"] # Update should fail not-found with pytest.raises(errors.FlowsheetNotFoundInMemory): srv.update_flowsheet("oscar")
def test_flowsheet_server_run(flash_model): import requests srv = model_server.FlowsheetServer() srv.start() srv.path = "/app" resp = requests.get(f"http://localhost:{srv.port}/app") assert not resp.ok # ok to get /app with bogus id (id is just added to response page) resp = requests.get(f"http://localhost:{srv.port}/app?id=1234") assert resp.ok # not ok to get /fs with bogus id resp = requests.get(f"http://localhost:{srv.port}/fs?id=1234") assert not resp.ok # add the flowsheet fs = flash_model.fs srv.add_flowsheet("oscar", fs, persist.MemoryDataStore()) # now /fs should work resp = requests.get(f"http://localhost:{srv.port}/fs?id=oscar") assert resp.ok print("Bogus PUT") resp = requests.put(f"http://localhost:{srv.port}/fs") assert not resp.ok
def test_datastoremanager_save_load(tmp_path): dsm = persist.DataStoreManager() dsm.add("foo", persist.FileDataStore(tmp_path / "test.json")) dsm.add("bar", persist.MemoryDataStore()) _save_and_load_data_dsm("foo", dsm) _save_and_load_data_dsm("bar", dsm)
def test_memory_data_store(): store = persist.MemoryDataStore() _save_and_load_data(store)