Beispiel #1
0
 def build_binary(self, tag, binary_name):
     source_folder = self.binary_source_folder(tag, binary_name)
     golang = dependencies.get_module_by_key("golang")
     golang_env = golang.get_env()
     myprocess.run_process(['go', 'build'],
                           cwd=source_folder,
                           env=golang_env)
Beispiel #2
0
def _get_args():
    directory = dependencies.get_module_by_key("nodedebug").get_directory()
    executable = path.join(directory, "nodedebug")
    config_path = path.join(directory, "config", "config.toml")
    genesis_path = path.join(directory, "config", "genesis.json")

    args = [
        executable, "--rest-api-port", "8080", "--config", config_path,
        "--genesis-file", genesis_path
    ]
    return args
Beispiel #3
0
    def _replace_placeholders(self):
        rust_module = dependencies.get_module_by_key("rust")
        self.rust_directory = rust_module.get_directory()
        self.rust_bin_directory = path.join(self.rust_directory, "bin")

        cargo_path = path.join(self.directory, "Cargo.toml")
        cargo_debug_path = path.join(self.directory, "debug", "Cargo.toml")
        launch_path = path.join(self.directory, ".vscode", "launch.json")
        tasks_path = path.join(self.directory, ".vscode", "tasks.json")
        debug_main_path = path.join(self.directory, "debug", "src", "main.rs")
        test_paths = utils.list_files(path.join(self.directory, "test"))

        logger.info("Updating cargo files...")

        cargo_file = CargoFile(cargo_path)
        cargo_file.package_name = self.project_name
        cargo_file.bin_name = self.project_name
        cargo_file.version = "0.0.1"
        cargo_file.authors = ["you"]
        cargo_file.edition = "2018"
        cargo_file.save()

        cargo_file_debug = CargoFile(cargo_debug_path)
        cargo_file_debug.package_name = f"{self.project_name}-debug"
        cargo_file_debug.version = "0.0.1"
        cargo_file_debug.authors = ["you"]
        cargo_file_debug.edition = "2018"
        cargo_file_debug.save()

        logger.info("Applying replacements...")

        self._replace_in_files([launch_path, tasks_path],
                               [("{{PROJECT_NAME}}", self.project_name),
                                ("{{PATH_RUST_BIN}}", self.rust_bin_directory),
                                ("{{RUSTUP_HOME}}", self.rust_directory),
                                ("{{CARGO_HOME}}", self.rust_directory)])

        self._replace_in_files(
            [debug_main_path],
            [
                # Example "use simple_coin::*" to "use my_project::*"
                (f"use {self.template_name.replace('-', '_')}::*",
                 f"use {self.project_name.replace('-', '_')}::*")
            ])

        self._replace_in_files([cargo_debug_path],
                               [(f"[dependencies.{self.template_name}]",
                                 f"[dependencies.{self.project_name}]")])

        self._replace_in_files(test_paths, [(f"adder.wasm", f"myadder.wasm")])
Beispiel #4
0
def check(args: Any):
    name: str = args.name
    tag: str = args.tag
    module = dependencies.get_module_by_key(name)
    default_tag: str = config.get_dependency_tag(module.key)
    tag_to_check = tag or default_tag
    installed = module.is_installed(tag_to_check)
    if installed:
        print(
            f"[{name} {tag_to_check}] is installed. Default version (tag) is [{default_tag}]."
        )
        return

    raise errors.DependencyMissing(name, tag_to_check)
    def run_tests(self, tests_directory: str, wildcard: str = ""):
        arwentools = cast(StandaloneModule,
                          dependencies.get_module_by_key("arwentools"))
        tool_env = arwentools.get_env()
        tool = path.join(arwentools.get_parent_directory(), "mandos-test")
        test_folder = path.join(self.directory, tests_directory)

        if not wildcard:
            args = [tool, test_folder]
            myprocess.run_process(args, env=tool_env)
        else:
            pattern = path.join(test_folder, wildcard)
            test_files = glob.glob(pattern)

            for test_file in test_files:
                print("Run test for:", test_file)
                args = [tool, test_file]
                myprocess.run_process(args, env=tool_env)
Beispiel #6
0
def build_binaries(testnet_config: TestnetConfiguration):
    golang = dependencies.get_module_by_key("golang")
    golang_env = golang.get_env()
    myprocess.run_process(['go', 'env'], env=golang_env)

    logger.info("Building seednode...")
    seednode_folder = testnet_config.node_source() / "cmd" / "seednode"
    myprocess.run_process(['go', 'build'], cwd=seednode_folder, env=golang_env)

    logger.info("Building node...")
    node_folder = testnet_config.node_source() / "cmd" / "node"
    myprocess.run_process(['go', 'build'], cwd=node_folder, env=golang_env)

    logger.info("Building arwen...")
    node_folder_root = testnet_config.node_source()
    env = dict(golang_env)
    env["ARWEN_PATH"] = node_folder
    myprocess.run_process(['make', 'arwen'], cwd=node_folder_root, env=env)

    logger.info("Building proxy...")
    proxy_folder = testnet_config.proxy_source() / "cmd" / "proxy"
    myprocess.run_process(['go', 'build'], cwd=proxy_folder, env=golang_env)

    # Now copy the binaries to the testnet folder
    arwen_version = _get_arwen_version(testnet_config)
    libwasmer_path = path.join(
        golang.get_gopath(),
        f"pkg/mod/github.com/!elrond!network/arwen-wasm-vm@{arwen_version}/wasmer/libwasmer_darwin_amd64.dylib"
    )

    shutil.copy(seednode_folder / "seednode", testnet_config.seednode_folder())
    if workstation.get_platform() == "osx":
        shutil.copy(libwasmer_path, testnet_config.seednode_folder())

    for destination in testnet_config.all_nodes_folders():
        shutil.copy(node_folder / "node", destination)
        shutil.copy(node_folder / "arwen", destination)

        if workstation.get_platform() == "osx":
            shutil.copy(libwasmer_path, destination)

    shutil.copy(proxy_folder / "proxy", testnet_config.proxy_folder())
    if workstation.get_platform() == "osx":
        shutil.copy(libwasmer_path, testnet_config.proxy_folder())
Beispiel #7
0
    def run_tests(self, tests_directory, wildcard=None):
        testrunner_module = dependencies.get_module_by_key("arwentools")
        tool_directory = testrunner_module.get_directory()
        tool_env = testrunner_module.get_env()

        tool = path.join(tool_directory, "test")
        test_folder = path.join(self.directory, tests_directory)

        if not wildcard:
            args = [tool, test_folder]
            myprocess.run_process(args, env=tool_env)
        else:
            pattern = path.join(test_folder, wildcard)
            test_files = glob.glob(pattern)

            for test_file in test_files:
                print("Run test for:", test_file)
                args = [tool, test_file]
                myprocess.run_process(args, env=tool_env)
Beispiel #8
0
def _get_env():
    return dependencies.get_module_by_key("nodedebug").get_env()
Beispiel #9
0
 def _get_env(self):
     return dependencies.get_module_by_key("rust").get_env()