def test_generate_case01(assets_path):
    testassets_path = os.path.join(assets_path, "case01")
    partial_path = "partial_dockerfiles"
    generated_path = "generated"

    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)

    expected_generated_dockerfilepaths = [
        os.path.join(testassets_path, generated_path, "dockerfiles",
                     "python_base", "Dockerfile.python2.7.15"),
        os.path.join(testassets_path, generated_path, "dockerfiles",
                     "python_base", "Dockerfile.python3.6.7"),
    ]
    for each_filepath in expected_generated_dockerfilepaths:
        assert os.path.exists(each_filepath)

    generated_scripts_dir = os.path.join(testassets_path, generated_path,
                                         "scripts")
    with open(os.path.join(generated_scripts_dir, "build_python_base.sh"),
              'r') as f:
        script_content = f.read()
        assert "docker build --pull -t python_base:python2.7.15 -f ../dockerfiles/python_base/Dockerfile.python2.7.15 ." in script_content
        assert "docker build --pull -t python_base:python3.6.7 -f ../dockerfiles/python_base/Dockerfile.python3.6.7 ." in script_content

    with open(os.path.join(generated_scripts_dir, "push_python_base.sh"),
              'r') as f:
        script_content = f.read()
        assert "docker push python_base:python2.7.15" in script_content
        assert "docker push python_base:python3.6.7" in script_content
Esempio n. 2
0
def test_should_build_script_contains_right_statement(
        testassets_path, partial_path, generated_path,
        expected_generated_scripts_dir):
    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "build_tf_bazel_builder_base.sh"), 'r') as f:
        script_content = f.read()
        expected_build_statement = \
            "docker build"\
            " --pull"\
            " -t registry.navercorp.com/mtengine/tf_bazel_builder_base:cuda10.0_cudnn7.4_python2.7.15_tf1.12.0"\
            " -f ../dockerfiles/registry.navercorp.com/mtengine/tf_bazel_builder_base/Dockerfile.cuda10.0_cudnn7.4_python2.7.15_tf1.12.0"\
            " ."

        assert expected_build_statement in script_content

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "build_tf_bazel_builder.sh"), 'r') as f:
        script_content = f.read()
        expected_build_statement = \
            "docker build" \
            " -t registry.navercorp.com/mtengine/tf_bazel_builder:cuda10.0_cudnn7.4_python2.7.15_tf1.12.0_capability3.5_7.0_xla" \
            " -f ../dockerfiles/registry.navercorp.com/mtengine/tf_bazel_builder/Dockerfile.cuda10.0_cudnn7.4_python2.7.15_tf1.12.0_capability3.5_7.0_xla" \
            " ."

        assert expected_build_statement in script_content
Esempio n. 3
0
def generate(context_path, partial_path, generated_path):
    """Generate dockerfiles from partial dockerfiles"""
    console.notice("Command generate")
    kargs = {"context_path": context_path}
    if partial_path is not None:
        kargs["partial_path"] = partial_path
    if generated_path is not None:
        kargs["generated_path"] = generated_path
    invoke_generate(**kargs)
Esempio n. 4
0
def test_generate_should_generate_dockerfiles(
        testassets_path, partial_path, generated_path,
        expected_generated_dockerfilepaths,
        expected_generated_base_dockerfile_dir,
        expected_generated_builder_dockerfile_dir,
        expected_tf_bazel_builder_base_dockerfile_count,
        expected_tf_bazel_builder_dockerfile_count):
    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)

    for each_filepath in expected_generated_dockerfilepaths:
        assert os.path.exists(each_filepath), "Check [{}] existance.".format(
            each_filepath)
Esempio n. 5
0
def test_child_build_script_contains_execution_build_parent(
        testassets_path, partial_path, generated_path,
        expected_generated_scripts_dir):
    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)
    with open(
            os.path.join(expected_generated_scripts_dir,
                         "build_tf_bazel_builder_base.sh"), 'r') as f:
        script_content = f.read()
        assert "./build_" not in script_content

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "build_tf_bazel_builder.sh"), 'r') as f:
        script_content = f.read()
        assert "./build_tf_bazel_builder_base.sh" in script_content
Esempio n. 6
0
def test_should_pull_script_contains_right_statement(
        testassets_path, partial_path, generated_path,
        expected_generated_scripts_dir):
    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "push_tf_bazel_builder_base.sh"), 'r') as f:
        script_content = f.read()
        assert "docker push registry.navercorp.com/mtengine/tf_bazel_builder_base:cuda10.0_cudnn7.4_python2.7.15_tf1.12.0" in script_content
        assert "docker push registry.navercorp.com/mtengine/tf_bazel_builder_base:cuda9.0_cudnn7.0_python2.7.15_tf1.12.0" in script_content

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "push_tf_bazel_builder.sh"), 'r') as f:
        script_content = f.read()
        assert "docker push registry.navercorp.com/mtengine/tf_bazel_builder:cuda10.0_cudnn7.4_python2.7.15_tf1.12.0_capability3.5_7.0" in script_content
        assert "docker push registry.navercorp.com/mtengine/tf_bazel_builder:cuda10.0_cudnn7.4_python2.7.15_tf1.12.0_capability3.5_7.0_xla" in script_content
Esempio n. 7
0
def test_should_build_script_contains_appropriate_pull_option(
        testassets_path, partial_path, generated_path,
        expected_generated_scripts_dir,
        expected_tf_bazel_builder_base_dockerfile_count):
    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "build_tf_bazel_builder_base.sh"), 'r') as f:
        script_content = f.read()
        assert script_content.count(
            "docker build --pull"
        ) == expected_tf_bazel_builder_base_dockerfile_count

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "build_tf_bazel_builder.sh"), 'r') as f:
        script_content = f.read()
        assert script_content.count("docker build --pull") == 0
Esempio n. 8
0
def test_should_pull_script_contains_right_number_of_image(
        testassets_path, partial_path, generated_path,
        expected_generated_scripts_dir,
        expected_tf_bazel_builder_base_dockerfile_count,
        expected_tf_bazel_builder_dockerfile_count):
    rm_rf(os.path.join(testassets_path, generated_path))
    invoke_generate(testassets_path, partial_path, generated_path)

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "push_tf_bazel_builder_base.sh"), 'r') as f:
        script_content = f.read()
        assert script_content.count(
            "docker push") == expected_tf_bazel_builder_base_dockerfile_count

    with open(
            os.path.join(expected_generated_scripts_dir,
                         "push_tf_bazel_builder.sh"), 'r') as f:
        script_content = f.read()
        assert script_content.count(
            "docker push") == expected_tf_bazel_builder_dockerfile_count