Hello everyone, I would like to use the PETSc Testing System for testing a package that I am developing. I have read the PETSc developer documentation and have written some tests using the PETSc Test Description Language. I am going through the files in ${PETSC_DIR}/config but I am not able to make the testing system look into the directory tree of my project. Any suggestions? Thanks in advance Daniele
Our testing framework was pretty much tailor-made for the PETSc src tree and as such has many hard-coded paths and decisions. I’m going to go out on a limb and say you probably won’t get this to work... That being said, one of the “base” paths that the testing harness uses to initially find tests is the `TESTSRCDIR` variable in `${PETSC_DIR}/gmakefile.test`. It is currently defined as ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR := $(dir $(mkfile_path))src ``` You should start by changing this to ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR ?= $(dir $(mkfile_path))src ``` That way you could run your tests via ``` $ make test TESTSRCDIR=/path/to/your/src/dir ``` I am sure there are many other modifications you will need to make. Best regards, Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
On Mar 27, 2023, at 06:14, Daniele Prada <[email protected]> wrote:
Hello everyone,
I would like to use the PETSc Testing System for testing a package that I am developing.
I have read the PETSc developer documentation and have written some tests using the PETSc Test Description Language. I am going through the files in ${PETSC_DIR}/config but I am not able to make the testing system look into the directory tree of my project.
Any suggestions?
Thanks in advance Daniele
On Mon, Mar 27, 2023 at 10:19 AM Jacob Faibussowitsch <[email protected]> wrote:
Our testing framework was pretty much tailor-made for the PETSc src tree and as such has many hard-coded paths and decisions. I’m going to go out on a limb and say you probably won’t get this to work...
I think we can help you get this to work. I have wanted to generalize the test framework for a long time. Everything is build by confg/gmakegentest.py and I think we can get away with just changing paths here and everything will work. Thanks! Matt
That being said, one of the “base” paths that the testing harness uses to initially find tests is the `TESTSRCDIR` variable in `${PETSC_DIR}/gmakefile.test`. It is currently defined as ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR := $(dir $(mkfile_path))src ``` You should start by changing this to ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR ?= $(dir $(mkfile_path))src ``` That way you could run your tests via ``` $ make test TESTSRCDIR=/path/to/your/src/dir ``` I am sure there are many other modifications you will need to make.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
On Mar 27, 2023, at 06:14, Daniele Prada <[email protected]> wrote:
Hello everyone,
I would like to use the PETSc Testing System for testing a package that I am developing.
I have read the PETSc developer documentation and have written some tests using the PETSc Test Description Language. I am going through the files in ${PETSC_DIR}/config but I am not able to make the testing system look into the directory tree of my project.
Any suggestions?
Thanks in advance Daniele
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
Dear Matthew, dear Jacob, Thank you very much for your useful remarks. I managed to use the PETSc Testing System by doing as follows: 1. Redefined TESTDIR when running make 2. Used a project tree similar to that of PETSc. For examples, tests for 'package1' are in $MYLIB/src/package1/tests/ 3. cp $PETSC_DIR/gmakefile.test $MYLIB/gmakefile.test Inside gmakefile.test: 4. Right AFTER "-include petscdir.mk" added "-include mylib.mk" to have $MYLIB exported (note: this affects TESTSRCDIR) 5. Redefined variable pkgs as "pkgs := package1" 6. Introduced a few variables to make PETSC_COMPILE.c work: CFLAGS := -I$(MYLIB)/include LDFLAGS = -L$(MYLIB)/lib LDLIBS = -lmylib 7. Changed the call to gmakegentest.py as follows $(PYTHON) $(CONFIGDIR)/gmakegentest.py --petsc-dir=$(PETSC_DIR) --petsc-arch=$(PETSC_ARCH) --testdir=$(TESTDIR) --srcdir=$(MYLIB)/src --pkg-pkgs=$(pkgs) 8. Changed the rule $(testexe.c) as follows: $(call quiet,CLINKER) $(EXEFLAGS) $(LDFLAGS) -o $@ $^ $(PETSC_TEST_LIB) $(LDLIBS) 9. Added the option --srcdir=$(TESTSRCDIR) and set --petsc-dir=$(MYLIB) when calling query_tests.py, for example: TESTTARGETS := $(shell $(PYTHON) $(CONFIGDIR)/query_tests.py --srcdir=$(TESTSRCDIR) --testdir=$(TESTDIR) --petsc-dir=$(MYLIB) --petsc-arch=$(PETSC_ARCH) --searchin=$(searchin) 'name' '$(search)') What do you think? Best, Daniele On Mon, Mar 27, 2023 at 4:38 PM Matthew Knepley <[email protected]> wrote:
On Mon, Mar 27, 2023 at 10:19 AM Jacob Faibussowitsch <[email protected]> wrote:
Our testing framework was pretty much tailor-made for the PETSc src tree and as such has many hard-coded paths and decisions. I’m going to go out on a limb and say you probably won’t get this to work...
I think we can help you get this to work. I have wanted to generalize the test framework for a long time. Everything is build by
confg/gmakegentest.py
and I think we can get away with just changing paths here and everything will work.
Thanks!
Matt
That being said, one of the “base” paths that the testing harness uses to initially find tests is the `TESTSRCDIR` variable in `${PETSC_DIR}/gmakefile.test`. It is currently defined as ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR := $(dir $(mkfile_path))src ``` You should start by changing this to ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR ?= $(dir $(mkfile_path))src ``` That way you could run your tests via ``` $ make test TESTSRCDIR=/path/to/your/src/dir ``` I am sure there are many other modifications you will need to make.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
On Mar 27, 2023, at 06:14, Daniele Prada <[email protected]> wrote:
Hello everyone,
I would like to use the PETSc Testing System for testing a package that I am developing.
I have read the PETSc developer documentation and have written some tests using the PETSc Test Description Language. I am going through the files in ${PETSC_DIR}/config but I am not able to make the testing system look into the directory tree of my project.
Any suggestions?
Thanks in advance Daniele
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
Great that you got it working. We would accept a merge request that made our infrastructure less PETSc-specific so long as it doesn't push more complexity on the end user. That would likely make it easier for you to pull updates in the future. Daniele Prada <[email protected]> writes:
Dear Matthew, dear Jacob,
Thank you very much for your useful remarks. I managed to use the PETSc Testing System by doing as follows:
1. Redefined TESTDIR when running make 2. Used a project tree similar to that of PETSc. For examples, tests for 'package1' are in $MYLIB/src/package1/tests/ 3. cp $PETSC_DIR/gmakefile.test $MYLIB/gmakefile.test
Inside gmakefile.test:
4. Right AFTER "-include petscdir.mk" added "-include mylib.mk" to have $MYLIB exported (note: this affects TESTSRCDIR) 5. Redefined variable pkgs as "pkgs := package1" 6. Introduced a few variables to make PETSC_COMPILE.c work:
CFLAGS := -I$(MYLIB)/include LDFLAGS = -L$(MYLIB)/lib LDLIBS = -lmylib
7. Changed the call to gmakegentest.py as follows
$(PYTHON) $(CONFIGDIR)/gmakegentest.py --petsc-dir=$(PETSC_DIR) --petsc-arch=$(PETSC_ARCH) --testdir=$(TESTDIR) --srcdir=$(MYLIB)/src --pkg-pkgs=$(pkgs)
8. Changed the rule $(testexe.c) as follows:
$(call quiet,CLINKER) $(EXEFLAGS) $(LDFLAGS) -o $@ $^ $(PETSC_TEST_LIB) $(LDLIBS)
9. Added the option --srcdir=$(TESTSRCDIR) and set --petsc-dir=$(MYLIB) when calling query_tests.py, for example:
TESTTARGETS := $(shell $(PYTHON) $(CONFIGDIR)/query_tests.py --srcdir=$(TESTSRCDIR) --testdir=$(TESTDIR) --petsc-dir=$(MYLIB) --petsc-arch=$(PETSC_ARCH) --searchin=$(searchin) 'name' '$(search)')
What do you think?
Best, Daniele
On Mon, Mar 27, 2023 at 4:38 PM Matthew Knepley <[email protected]> wrote:
On Mon, Mar 27, 2023 at 10:19 AM Jacob Faibussowitsch <[email protected]> wrote:
Our testing framework was pretty much tailor-made for the PETSc src tree and as such has many hard-coded paths and decisions. I’m going to go out on a limb and say you probably won’t get this to work...
I think we can help you get this to work. I have wanted to generalize the test framework for a long time. Everything is build by
confg/gmakegentest.py
and I think we can get away with just changing paths here and everything will work.
Thanks!
Matt
That being said, one of the “base” paths that the testing harness uses to initially find tests is the `TESTSRCDIR` variable in `${PETSC_DIR}/gmakefile.test`. It is currently defined as ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR := $(dir $(mkfile_path))src ``` You should start by changing this to ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR ?= $(dir $(mkfile_path))src ``` That way you could run your tests via ``` $ make test TESTSRCDIR=/path/to/your/src/dir ``` I am sure there are many other modifications you will need to make.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
On Mar 27, 2023, at 06:14, Daniele Prada <[email protected]> wrote:
Hello everyone,
I would like to use the PETSc Testing System for testing a package that I am developing.
I have read the PETSc developer documentation and have written some tests using the PETSc Test Description Language. I am going through the files in ${PETSC_DIR}/config but I am not able to make the testing system look into the directory tree of my project.
Any suggestions?
Thanks in advance Daniele
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
Will do, thanks! On Tue, Mar 28, 2023 at 7:28 PM Jed Brown <[email protected]> wrote:
Great that you got it working. We would accept a merge request that made our infrastructure less PETSc-specific so long as it doesn't push more complexity on the end user. That would likely make it easier for you to pull updates in the future.
Daniele Prada <[email protected]> writes:
Dear Matthew, dear Jacob,
Thank you very much for your useful remarks. I managed to use the PETSc Testing System by doing as follows:
1. Redefined TESTDIR when running make 2. Used a project tree similar to that of PETSc. For examples, tests for 'package1' are in $MYLIB/src/package1/tests/ 3. cp $PETSC_DIR/gmakefile.test $MYLIB/gmakefile.test
Inside gmakefile.test:
4. Right AFTER "-include petscdir.mk" added "-include mylib.mk" to have $MYLIB exported (note: this affects TESTSRCDIR) 5. Redefined variable pkgs as "pkgs := package1" 6. Introduced a few variables to make PETSC_COMPILE.c work:
CFLAGS := -I$(MYLIB)/include LDFLAGS = -L$(MYLIB)/lib LDLIBS = -lmylib
7. Changed the call to gmakegentest.py as follows
$(PYTHON) $(CONFIGDIR)/gmakegentest.py --petsc-dir=$(PETSC_DIR) --petsc-arch=$(PETSC_ARCH) --testdir=$(TESTDIR) --srcdir=$(MYLIB)/src --pkg-pkgs=$(pkgs)
8. Changed the rule $(testexe.c) as follows:
$(call quiet,CLINKER) $(EXEFLAGS) $(LDFLAGS) -o $@ $^ $(PETSC_TEST_LIB) $(LDLIBS)
9. Added the option --srcdir=$(TESTSRCDIR) and set --petsc-dir=$(MYLIB) when calling query_tests.py, for example:
TESTTARGETS := $(shell $(PYTHON) $(CONFIGDIR)/query_tests.py --srcdir=$(TESTSRCDIR) --testdir=$(TESTDIR) --petsc-dir=$(MYLIB) --petsc-arch=$(PETSC_ARCH) --searchin=$(searchin) 'name' '$(search)')
What do you think?
Best, Daniele
On Mon, Mar 27, 2023 at 4:38 PM Matthew Knepley <[email protected]> wrote:
On Mon, Mar 27, 2023 at 10:19 AM Jacob Faibussowitsch < [email protected]> wrote:
Our testing framework was pretty much tailor-made for the PETSc src tree and as such has many hard-coded paths and decisions. I’m going to go out on a limb and say you probably won’t get this to work...
I think we can help you get this to work. I have wanted to generalize the test framework for a long time. Everything is build by
confg/gmakegentest.py
and I think we can get away with just changing paths here and everything will work.
Thanks!
Matt
That being said, one of the “base” paths that the testing harness uses to initially find tests is the `TESTSRCDIR` variable in `${PETSC_DIR}/gmakefile.test`. It is currently defined as ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR := $(dir $(mkfile_path))src ``` You should start by changing this to ``` # TESTSRCDIR is always relative to gmakefile.test # This must be before includes mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) TESTSRCDIR ?= $(dir $(mkfile_path))src ``` That way you could run your tests via ``` $ make test TESTSRCDIR=/path/to/your/src/dir ``` I am sure there are many other modifications you will need to make.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
On Mar 27, 2023, at 06:14, Daniele Prada <[email protected]> wrote:
Hello everyone,
I would like to use the PETSc Testing System for testing a package that I am developing.
I have read the PETSc developer documentation and have written some tests using the PETSc Test Description Language. I am going through the files in ${PETSC_DIR}/config but I am not able to make the testing system look into the directory tree of my project.
Any suggestions?
Thanks in advance Daniele
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
participants (4)
-
Daniele Prada -
Jacob Faibussowitsch -
Jed Brown -
Matthew Knepley