def test_run_with_default_connection(): """Test that the command 'aea run' works as expected.""" runner = CliRunner() agent_name = "myagent" cwd = os.getcwd() t = tempfile.mkdtemp() # copy the 'packages' directory in the parent of the agent folder. shutil.copytree(Path(ROOT_DIR, "packages"), Path(t, "packages")) os.chdir(t) result = runner.invoke( cli, [*CLI_LOG_OPTION, "init", "--local", "--author", AUTHOR]) assert result.exit_code == 0 result = runner.invoke(cli, [*CLI_LOG_OPTION, "create", "--local", agent_name]) assert result.exit_code == 0 os.chdir(Path(t, agent_name)) try: process = PexpectWrapper( # nosec [sys.executable, "-m", "aea.cli", "run"], env=os.environ.copy(), maxread=10000, encoding="utf-8", logfile=sys.stdout, ) process.expect("Start processing messages", timeout=10) process.control_c() process.wait_to_complete(10) assert process.returncode == 0 finally: process.terminate() process.wait_to_complete(10) os.chdir(cwd) try: shutil.rmtree(t) except (OSError, IOError): pass
def test_gym_ex(): """Run the gym ex sequence.""" try: process = PexpectWrapper( # nosec [ sys.executable, str(Path("examples/gym_ex/train.py").resolve()), "--nb-steps", "50", ], env=os.environ.copy(), maxread=1, encoding="utf-8", logfile=sys.stdout, ) process.expect(["Step 50/50"], timeout=10) process.wait_to_complete(5) assert process.returncode == 0, "Test failed" finally: process.terminate() process.wait()
def test_gym_ex(self): """Run the gym ex sequence.""" try: env = os.environ.copy() env["PYTHONPATH"] = f"{self.t}{env_path_separator()}{env.get('PYTHONPATH', '')}" process = PexpectWrapper( # nosec [ sys.executable, str(Path("examples/gym_ex/train.py").resolve()), "--nb-steps", "50", ], env=env, maxread=1, encoding="utf-8", logfile=sys.stdout, ) process.expect(["Step 50/50"], timeout=10) process.wait_to_complete(5) assert process.returncode == 0, "Test failed" finally: process.terminate() process.wait()
def test_run_multiple_connections(connection_ids): """Test that the command 'aea run' works as expected when specifying multiple connections.""" runner = CliRunner() agent_name = "myagent" cwd = os.getcwd() t = tempfile.mkdtemp() # copy the 'packages' directory in the parent of the agent folder. shutil.copytree(Path(ROOT_DIR, "packages"), Path(t, "packages")) os.chdir(t) result = runner.invoke( cli, [*CLI_LOG_OPTION, "init", "--local", "--author", AUTHOR]) assert result.exit_code == 0 result = runner.invoke(cli, [*CLI_LOG_OPTION, "create", "--local", agent_name]) assert result.exit_code == 0 os.chdir(Path(t, agent_name)) result = runner.invoke( cli, [ *CLI_LOG_OPTION, "add", "--local", "connection", "fetchai/http_client:0.7.0" ], ) assert result.exit_code == 0 # stub is the default connection, so it should fail result = runner.invoke(cli, [ *CLI_LOG_OPTION, "add", "--local", "connection", str(DEFAULT_CONNECTION) ]) assert result.exit_code == 1 process = PexpectWrapper( # nosec [ sys.executable, "-m", "aea.cli", "run", "--connections", connection_ids ], env=os.environ, maxread=10000, encoding="utf-8", logfile=sys.stdout, ) try: process.expect_all(["Start processing messages"], timeout=20) process.control_c() process.expect( EOF, timeout=20, ) process.wait_to_complete(10) assert process.returncode == 0 finally: process.wait_to_complete(10) os.chdir(cwd) try: shutil.rmtree(t) except (OSError, IOError): pass
def test_end_to_end(self): """Perform end to end test with simple register/search agents.""" registration_agent_name = "registration_agent" self.value = uuid.uuid4().hex self.fetch_agent( "fetchai/simple_service_registration", agent_name=registration_agent_name, is_local=True, ) self.run_cli_command( "config", "set", "vendor.fetchai.connections.p2p_libp2p.config", "--type", "dict", json.dumps(self.registration_agent_connection), cwd=registration_agent_name, ) self.run_cli_command( "config", "set", "vendor.fetchai.skills.simple_service_registration.models.strategy.args.service_data", "--type", "dict", json.dumps({ "key": self.key, "value": self.value }), cwd=registration_agent_name, ) self.run_cli_command( "config", "set", "vendor.fetchai.connections.soef.config.token_storage_path", os.path.join(self.t, registration_agent_name, "soef_key.txt"), cwd=registration_agent_name, ) search_agent_name = "search_agent" self.fetch_agent( "fetchai/simple_service_search", agent_name=search_agent_name, is_local=True, ) self.run_cli_command( "config", "set", "vendor.fetchai.connections.p2p_libp2p.config", "--type", "dict", json.dumps(self.search_agent_connection), cwd=search_agent_name, ) self.run_cli_command( "config", "set", "vendor.fetchai.skills.simple_service_search.models.strategy.args.search_query", "--type", "dict", json.dumps({ "constraint_type": "==", "search_key": self.key, "search_value": self.value, }), cwd=search_agent_name, ) self.run_cli_command( "config", "set", "vendor.fetchai.skills.simple_service_search.behaviours.service_search.args.tick_interval", "--type", "int", "2", cwd=search_agent_name, ) self.run_cli_command( "config", "set", "vendor.fetchai.connections.soef.config.token_storage_path", os.path.join(self.t, search_agent_name, "soef_key.txt"), cwd=search_agent_name, ) self.run_cli_command( "build", cwd=registration_agent_name, ) self.run_cli_command( "build", cwd=search_agent_name, ) self.set_agent_context(registration_agent_name) self.generate_private_key(FETCHAI, FETCHAI_PRIVATE_KEY_FILE_CONNECTION) self.add_private_key(FETCHAI, FETCHAI_PRIVATE_KEY_FILE_CONNECTION, connection=True) self.generate_private_key() self.add_private_key() self.unset_agent_context() self.run_cli_command( "issue-certificates", cwd=registration_agent_name, ) self.set_agent_context(search_agent_name) self.generate_private_key(FETCHAI, FETCHAI_PRIVATE_KEY_FILE_CONNECTION) self.add_private_key(FETCHAI, FETCHAI_PRIVATE_KEY_FILE_CONNECTION, connection=True) self.generate_private_key() self.add_private_key() self.unset_agent_context() self.run_cli_command( "issue-certificates", cwd=search_agent_name, ) proc = PexpectWrapper( # nosec [ sys.executable, "-m", "aea.cli", "-v", "DEBUG", "launch", registration_agent_name, search_agent_name, ], env=os.environ, maxread=10000, encoding="utf-8", logfile=sys.stdout, ) try: proc.expect_all( [ f"[{search_agent_name}] found number of agents=1, search_response" ], timeout=30, ) finally: proc.control_c() proc.expect("Exit cli. code: 0", timeout=30)