Example #1
0
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
Example #2
0
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()
Example #3
0
    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()
Example #4
0
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
Example #5
0
    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)