[llvm] [MLGO] Add tests for scripts (PR #78878)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 20 22:12:40 PST 2024
https://github.com/boomanaiden154 updated https://github.com/llvm/llvm-project/pull/78878
>From de0e2f0fc156e2214b053f0c090fc82104499098 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Sun, 21 Jan 2024 03:53:03 +0000
Subject: [PATCH 1/4] Add make_corpus script test
---
.../tests/corpus/make_corpus_script.test | 22 +++++++++++++++++++
llvm/utils/mlgo-utils/tests/lit.cfg | 7 +++++-
2 files changed, 28 insertions(+), 1 deletion(-)
create mode 100644 llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test
diff --git a/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test b/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test
new file mode 100644
index 00000000000000..f4f97544bce47d
--- /dev/null
+++ b/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test
@@ -0,0 +1,22 @@
+## Testing that the make_corpus script works as expected when invoked.
+
+# RUN: rm -rf %t.dir && mkdir %t.dir
+# RUN: touch %t.dir/test1.bc
+# RUN: touch %t.dir/test2.bc
+# RUN: rm -rf %t.out.dir && mkdir %t.out.dir
+
+# RUN: %python %scripts_dir/corpus/make_corpus.py --input_dir=%t.dir --output_dir=%t.out.dir --default_args="-test"
+
+# RUN: cat %t.out.dir/corpus_description.json | FileCheck %s
+
+## Check that we get the expected command in the global command override
+# CHECK: "-test"
+# CHECK: "has_thinlto": false
+## Check that the modules are in the corpus description
+# CHECK: "test1"
+# CHECK: "test2"
+
+# RUN: ls %t.out.dir | FileCheck %s --check-prefix CHECK-DIR
+
+# CHECK-DIR: test1.bc
+# CHECK-DIR: test2.bc
diff --git a/llvm/utils/mlgo-utils/tests/lit.cfg b/llvm/utils/mlgo-utils/tests/lit.cfg
index 055f0945942fc1..9afced53f195c5 100644
--- a/llvm/utils/mlgo-utils/tests/lit.cfg
+++ b/llvm/utils/mlgo-utils/tests/lit.cfg
@@ -1,3 +1,5 @@
+import os
+
import lit.formats
from lit.llvm import llvm_config
@@ -5,7 +7,7 @@ from lit.llvm import llvm_config
config.name = "mlgo-utils"
config.test_format = lit.formats.ShTest(execute_external=False)
-config.suffixes = [".py"]
+config.suffixes = [".py", ".test"]
config.test_source_root = os.path.dirname(__file__)
config.test_exec_root = config.obj_root
@@ -13,3 +15,6 @@ config.test_exec_root = config.obj_root
config.environment["PYTHONPATH"] = os.path.join(config.src_root, "utils", "mlgo-utils")
llvm_config.use_default_substitutions()
+
+scripts_dir = os.path.join(config.src_root, "utils/mlgo-utils/mlgo")
+config.substitutions.append(("%scripts_dir", scripts_dir))
>From 7f137b33b24d5660e69aa0931a0ee08871822a36 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Sun, 21 Jan 2024 04:58:42 +0000
Subject: [PATCH 2/4] Add another test
---
llvm/utils/mlgo-utils/CMakeLists.txt | 2 +-
.../combine_training_corpus_script.test | 29 +++++++++++++++++++
llvm/utils/mlgo-utils/tests/lit.cfg | 1 +
3 files changed, 31 insertions(+), 1 deletion(-)
create mode 100644 llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test
diff --git a/llvm/utils/mlgo-utils/CMakeLists.txt b/llvm/utils/mlgo-utils/CMakeLists.txt
index 7b303c7639401a..c263c92c632797 100644
--- a/llvm/utils/mlgo-utils/CMakeLists.txt
+++ b/llvm/utils/mlgo-utils/CMakeLists.txt
@@ -5,7 +5,7 @@ configure_lit_site_cfg(
add_lit_testsuite(check-mlgo-utils "Running mlgo-utils tests"
${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS "FileCheck" "not" "count"
+ DEPENDS "FileCheck" "not" "count" "split-file"
)
set_target_properties(check-mlgo-utils PROPERTIES FOLDER "Tests")
diff --git a/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test b/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test
new file mode 100644
index 00000000000000..1aa182146a49ee
--- /dev/null
+++ b/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test
@@ -0,0 +1,29 @@
+## Testing that the combine_trainig_corpus script works as expected when
+## invoked.
+
+# RUN: rm -rf %t.dir && mkdir %t.dir
+# RUN: split-file %s %t.dir
+# RUN: %python %scripts_dir/corpus/combine_training_corpus.py --root_dir=%t.dir
+# RUN: cat %t.dir/corpus_description.json | FileCheck %s
+
+## Check that we end up with the same properties as the original corpora
+# CHECK: "has_thinlto": false
+
+## Check that the modules end up in the combined corpus. Order does not matter.
+# CHECK-DAG: "subcorpus1/test1.o"
+# CHECK-DAG: "subcorpus2/test2.o"
+
+#--- subcorpus1/corpus_description.json
+{
+ "has_thinlto": false,
+ "modules": [
+ "test1.o"
+ ]
+}
+#--- subcorpus2/corpus_description.json
+{
+ "has_thinlto": false,
+ "modules": [
+ "test2.o"
+ ]
+}
diff --git a/llvm/utils/mlgo-utils/tests/lit.cfg b/llvm/utils/mlgo-utils/tests/lit.cfg
index 9afced53f195c5..58c35e69c652c5 100644
--- a/llvm/utils/mlgo-utils/tests/lit.cfg
+++ b/llvm/utils/mlgo-utils/tests/lit.cfg
@@ -15,6 +15,7 @@ config.test_exec_root = config.obj_root
config.environment["PYTHONPATH"] = os.path.join(config.src_root, "utils", "mlgo-utils")
llvm_config.use_default_substitutions()
+config.substitutions.append(("split-file", llvm_config.use_llvm_tool("split-file")))
scripts_dir = os.path.join(config.src_root, "utils/mlgo-utils/mlgo")
config.substitutions.append(("%scripts_dir", scripts_dir))
>From 86b2ccadd8ed060bb6dafd593c5160c98a604861 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Sun, 21 Jan 2024 05:16:05 +0000
Subject: [PATCH 3/4] Add extract_ir test
---
llvm/utils/mlgo-utils/CMakeLists.txt | 2 +-
.../tests/corpus/extract_ir_script.test | 44 +++++++++++++++++++
llvm/utils/mlgo-utils/tests/lit.cfg | 2 +
3 files changed, 47 insertions(+), 1 deletion(-)
create mode 100644 llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test
diff --git a/llvm/utils/mlgo-utils/CMakeLists.txt b/llvm/utils/mlgo-utils/CMakeLists.txt
index c263c92c632797..3129331d58c75b 100644
--- a/llvm/utils/mlgo-utils/CMakeLists.txt
+++ b/llvm/utils/mlgo-utils/CMakeLists.txt
@@ -5,7 +5,7 @@ configure_lit_site_cfg(
add_lit_testsuite(check-mlgo-utils "Running mlgo-utils tests"
${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS "FileCheck" "not" "count" "split-file"
+ DEPENDS "FileCheck" "not" "count" "split-file" "yaml2obj" "llvm-objcopy"
)
set_target_properties(check-mlgo-utils PROPERTIES FOLDER "Tests")
diff --git a/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test b/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test
new file mode 100644
index 00000000000000..a7629eb629219d
--- /dev/null
+++ b/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test
@@ -0,0 +1,44 @@
+## Test that invoking the extract_ir script work as expected.
+
+# RUN: rm -rf %t.dir && mkdir %t.dir
+# RUN: yaml2obj %s -o %t.dir/test1.o
+# RUN: yaml2obj %s -o %t.dir/test2.o
+# RUN: rm -rf %t.dir.out && mkdir %t.dir.out
+
+# RUN: %python %scripts_dir/corpus/extract_ir.py --input=%t.dir --input_type=directory --output_dir=%t.dir.out --llvm_objcopy_path=llvm-objcopy
+# RUN: cat %t.dir.out/corpus_description.json | FileCheck %s
+
+## Check that this is not a thinLTO build
+# CHECK: "has_thinlto": false
+## Check that the expected modules end up in the corpus description
+# CHECK-DAG: "test1.o"
+# CHECK-DAG: "test2.o"
+
+# RUN: ls %t.dir.out | FileCheck %s --check-prefix CHECK-DIR
+
+# CHECK-DIR: test1.o.bc
+# CHECK-DIR: test1.o.cmd
+# CHECK-DIR: test2.o.bc
+# CHECK-DIR: test2.o.cmd
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+ SectionHeaderStringTable: .strtab
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x10
+ Content: 55
+ - Name: .llvmbc
+ Type: SHT_PROGBITS
+ AddressAlign: 0x1
+ Content: 55
+ - Name: .llvmcmd
+ Type: SHT_PROGBITS
+ AddressAlign: 0x1
+ Content: ff
diff --git a/llvm/utils/mlgo-utils/tests/lit.cfg b/llvm/utils/mlgo-utils/tests/lit.cfg
index 58c35e69c652c5..0f6137e5e91383 100644
--- a/llvm/utils/mlgo-utils/tests/lit.cfg
+++ b/llvm/utils/mlgo-utils/tests/lit.cfg
@@ -16,6 +16,8 @@ config.environment["PYTHONPATH"] = os.path.join(config.src_root, "utils", "mlgo-
llvm_config.use_default_substitutions()
config.substitutions.append(("split-file", llvm_config.use_llvm_tool("split-file")))
+config.substitutions.append(("yaml2obj", llvm_config.use_llvm_tool("yaml2obj")))
+config.substitutions.append(("llvm-objcopy", llvm_config.use_llvm_tool("llvm-objcopy")))
scripts_dir = os.path.join(config.src_root, "utils/mlgo-utils/mlgo")
config.substitutions.append(("%scripts_dir", scripts_dir))
>From 0e8b5bf6b438ccd06688063bb39dfe55fbfb7926 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Sun, 21 Jan 2024 06:12:29 +0000
Subject: [PATCH 4/4] Add requires lines to tests
---
.../mlgo-utils/tests/corpus/combine_training_corpus_script.test | 2 ++
llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test | 2 ++
llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test | 2 ++
3 files changed, 6 insertions(+)
diff --git a/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test b/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test
index 1aa182146a49ee..933a9c2b9f811e 100644
--- a/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test
+++ b/llvm/utils/mlgo-utils/tests/corpus/combine_training_corpus_script.test
@@ -1,3 +1,5 @@
+# REQUIRES: python-38, absl, system-linux
+
## Testing that the combine_trainig_corpus script works as expected when
## invoked.
diff --git a/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test b/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test
index a7629eb629219d..c20581dacdc651 100644
--- a/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test
+++ b/llvm/utils/mlgo-utils/tests/corpus/extract_ir_script.test
@@ -1,3 +1,5 @@
+# REQUIRES: python-38, absl, system-linux
+
## Test that invoking the extract_ir script work as expected.
# RUN: rm -rf %t.dir && mkdir %t.dir
diff --git a/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test b/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test
index f4f97544bce47d..3c1b96523718e4 100644
--- a/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test
+++ b/llvm/utils/mlgo-utils/tests/corpus/make_corpus_script.test
@@ -1,3 +1,5 @@
+# REQUIRES: python-38, absl, system-linux
+
## Testing that the make_corpus script works as expected when invoked.
# RUN: rm -rf %t.dir && mkdir %t.dir
More information about the llvm-commits
mailing list