Jellyfish icon indicating copy to clipboard operation
Jellyfish copied to clipboard

ppc64le: Unit test fails erroneously

Open jlost opened this issue 8 years ago • 9 comments

Testing on PPC64le, unit tests fail erroneously. The tests should be altered so that they no longer erroneously fail.

The error can be recreated by compiling on an IBM POWER8 Red Hat system with --without-sse and running make check.

[u0017592@sys-82143 jellyfish-2.2.4]$ sudo make check
make  check-am
make[1]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
make  libgtest.la libgtest_main.la bin/generate_sequence bin/test_all
make[2]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
  CXX      unit_tests/gtest/src/libgtest_la-gtest-all.lo
  CXXLD    libgtest.la
  CXX      unit_tests/gtest/src/libgtest_main_la-gtest_main.lo
  CXXLD    libgtest_main.la
  CXX      jellyfish/generate_sequence.o
  CXX      jellyfish/mersenne.o
  CXX      jellyfish/backtrace.o
  CXX      jellyfish/dbg.o
  CXXLD    bin/generate_sequence
  CXX      unit_tests/bin_test_all-test_main.o
  CXX      unit_tests/bin_test_all-test_misc.o
  CXX      unit_tests/bin_test_all-test_offsets_key_value.o
  CXX      unit_tests/bin_test_all-test_simple_circular_buffer.o
  CXX      unit_tests/bin_test_all-test_rectangular_binary_matrix.o
  CXX      unit_tests/bin_test_all-test_mer_dna.o
  CXX      unit_tests/bin_test_all-test_large_hash_array.o
  CXX      unit_tests/bin_test_all-test_mer_overlap_sequence_parser.o
  CXX      unit_tests/bin_test_all-test_file_header.o
  CXX      unit_tests/bin_test_all-test_mer_iterator.o
  CXX      unit_tests/bin_test_all-test_hash_counter.o
  CXX      unit_tests/bin_test_all-test_mer_heap.o
  CXX      unit_tests/bin_test_all-test_stream_iterator.o
  CXX      unit_tests/bin_test_all-test_token_ring.o
  CXX      unit_tests/bin_test_all-test_text_dumper.o
  CXX      unit_tests/bin_test_all-test_dumpers.o
  CXX      unit_tests/bin_test_all-test_mapped_file.o
  CXX      unit_tests/bin_test_all-test_int128.o
  CXX      unit_tests/bin_test_all-test_mer_dna_bloom_counter.o
  CXX      unit_tests/bin_test_all-test_whole_sequence_parser.o
  CXX      unit_tests/bin_test_all-test_allocators_mmap.o
  CXX      unit_tests/bin_test_all-test_cooperative_pool2.o
  CXX      unit_tests/bin_test_all-test_generator_manager.o
  CXX      unit_tests/bin_test_all-test_atomic_bits_array.o
  CXX      unit_tests/bin_test_all-test_stdio_filebuf.o
  CXX      jellyfish/bin_test_all-backtrace.o
  CXXLD    bin/test_all
make[2]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make  check-TESTS
make[2]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
make[3]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
PASS: tests/generate_sequence.sh
PASS: tests/parallel_hashing.sh
PASS: tests/merge.sh
PASS: tests/bloom_filter.sh
SKIP: tests/big.sh
PASS: tests/subset_hashing.sh
PASS: tests/multi_file.sh
PASS: tests/bloom_counter.sh
FAIL: tests/large_key.sh
SKIP: tests/swig_python.sh
SKIP: tests/swig_ruby.sh
SKIP: tests/swig_perl.sh
FAIL: unit_tests/unit_tests.sh
============================================================================
Testsuite summary for jellyfish 2.2.4
============================================================================
# TOTAL: 13
# PASS:  7
# SKIP:  4
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
Please report to [email protected]
============================================================================
make[3]: *** [test-suite.log] Error 1
make[3]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make[2]: *** [check-TESTS] Error 2
make[2]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make: *** [check] Error 2

The unit testing error can be safely ignored. It occurs when using __int128 as the base type for storing mers, which is an experiment and not done by default. Everywhere else but in these few tests, uint64_t is used, and all the tests with uint64_t are successful. In addition the failure occurs in a method that is only used in the script binding, so it would not affect k-mer counting anyway.

See #63 for details.

jlost avatar Jul 27 '16 18:07 jlost

The unit testing error can be safely ignored. It occurs when using __int128 as the base type for storing mers, which is an experiment and not done by default.

As it is an experiment wouldn't be nice if it's disabled by default? (--without-int128)

rafaeldelucena avatar Nov 10 '16 03:11 rafaeldelucena

@gmarcais can you answer this issue too? x)

rafaeldelucena avatar Jan 24 '17 17:01 rafaeldelucena

And this one too

gmarcais avatar Jan 24 '17 18:01 gmarcais

@gmarcais: Running autoreconf -if using #68 and configure --without-int128 make all tests pass on ppc64le. :)

rafaeldelucena avatar Mar 16 '17 23:03 rafaeldelucena

@gmarcais: Hello again :)

When you talks about __int128 been an experiment for base type for mers at #63, the __int128 must be disable at project level or only for MerDNA scope?

Best regards

rafaeldelucena avatar Sep 26 '17 20:09 rafaeldelucena

Do you want to solve it or can I start it?

rafaeldelucena avatar Mar 03 '18 17:03 rafaeldelucena

This is fixed. WHoeve fixed it should claim the bounty.

shawnl avatar May 13 '19 13:05 shawnl

I think this was fixed by this PR: https://github.com/gmarcais/Jellyfish/commit/958f04918be65785ec626ded68bd0d55ccb76321

And using the --without-128 flag in configure

rafaeldelucena avatar Jun 19 '19 13:06 rafaeldelucena

@jlost could you confirm if this is already fixed?

rafaeldelucena avatar Jun 19 '19 13:06 rafaeldelucena

I no longer have access to the hardware to confirm for myself whether this was fixed, so I will defer to @shawnl and close it up.

jlost avatar Nov 19 '23 12:11 jlost