Commit Graph

224 Commits

Author SHA1 Message Date
avogar
880780c7a8 Fix some tests 2022-02-11 17:15:56 +03:00
Kruglov Pavel
33c3b2d856
Better message 2022-02-08 18:38:41 +03:00
avogar
4bd6cd0b80 Add more settings, print settings if tests fails, add random settings to CLICKHOUSE_URL_PARAMS 2022-01-28 16:46:00 +03:00
Kruglov Pavel
1cdf49efed
More random settings
Co-authored-by: tavplubix <tavplubix@gmail.com>
2022-01-28 15:26:55 +03:00
avogar
4a005579cc Randomize some settings in functional tests 2022-01-28 14:26:50 +03:00
vdimir
e5613fce3c Support USE_* build flags in tests' tags 2022-01-19 12:21:51 +00:00
Azat Khuzhin
b3f1951c15 clickhouse-test: avoid failing with UNKNOWN status in some cases
Like in:
- CREATE/DROP DATABASE failure
- Connection refused failure

Fixes: #32502
2021-12-12 18:48:54 +03:00
alexey-milovidov
8fdd7f329e
Merge pull request #32533 from azat/clickhouse-test-log-comment
clickhouse-test: use basename of the test for *.sh tests
2021-12-11 02:53:57 +03:00
Azat Khuzhin
2045a4f245 clickhouse-test: use basename of the test for *.sh tests 2021-12-10 21:45:29 +03:00
alesapin
a6e55b00e3
Revert "Revert "Split long tests into multiple checks"" 2021-12-10 18:39:02 +03:00
alesapin
dcbba460c1
Revert "Split long tests into multiple checks" 2021-12-10 18:38:42 +03:00
alesapin
8f8f65e6e0 Fix clickhouse test 2021-12-10 13:30:12 +03:00
alesapin
4c1babee05 Split long functional tests to multiple checks 2021-12-10 12:07:24 +03:00
Azat Khuzhin
d68d01988e clickhouse-test: apply --client-option in get_stacktraces_from_clickhouse() 2021-12-06 09:02:56 +03:00
Azat Khuzhin
9276384977 clickhouse-test: do not use random generator with shared state
Recently (#32094) test database had been overlapped, and random prefix
for database had been increased from 6 to 8.

But actually 6 bytes for random prefix should be enough (with existing
alphabet (0-9a-z) it is 36**6=2'176'782'336), and the real reason of
this overlap is that random generator by default uses shared state [1]:

    The functions supplied by this module are actually bound methods of
    a hidden instance of the random.Random class. You can instantiate your
    own instances of Random to get generators that don’t share state.

  [1]: https://docs.python.org/3/library/random.html

I've played a little bit with random in python, and using default random
generator it generates non-unique strings pretty fast, just in a few
runs, but using SystemRandom (that uses /dev/urandom) it takes ~1 minute.

Test:

```sh
    $ while /tmp/test.py | LANG=c sort -S5G | LANG=c uniq -d | tee /dev/stderr | wc -l | fgrep -q -x -c 0; do :; done
```

```python
    #!/usr/bin/env python3

    import multiprocessing
    import string
    import random

    def random_str(length=6):
        alphabet = string.ascii_lowercase + string.digits
        return ''.join(random.SystemRandom().choice(alphabet) for _ in range(length))

    def worker(_):
        print(random_str())

    with multiprocessing.Pool(processes=2) as pool:
        pool.map(worker, range(0, int(10e3)))
```

So let's switch to SystemRandom and use 6-byte prefix.
2021-12-03 01:29:23 +03:00
Azat Khuzhin
cc8ebff212 Increase length of random database in clickhouse-test
In [1] there was one overlap with 6-byte prefix:

    $ pigz -cd clickhouse-server2.log.gz | fgrep  test_8a50uz | fgrep 'CREATE DATABASE' | fgrep comment | cut -d' ' -f7-
    <Debug> executeQuery: (from 0.0.0.0:0, user: ) (comment: 01018_insert_multiple_blocks_with_defaults.sh) /* ddl_entry=query-0000001951 */ CREATE DATABASE test_8a50uz UUID 'bb71f2ea-5ed3-466d-bb71-f2ea5ed3266d' ENGINE = Replicated('/test/clickhouse/db/test_8a50uz', '{shard}', '{replica}')
    <Debug> executeQuery: (from 0.0.0.0:0, user: ) (comment: 00098_k_union_all.sql) /* ddl_entry=query-0000003157 */ CREATE DATABASE test_8a50uz UUID '09cc030b-a4c1-4192-89cc-030ba4c1e192' ENGINE = Replicated('/test/clickhouse/db/test_8a50uz', '{shard}', '{replica}')
    <Error> executeQuery: Code: 82. DB::Exception: Database test_8a50uz already exists. (DATABASE_ALREADY_EXISTS) (version 21.12.1.8932) (from 0.0.0.0:0) (comment: 00098_k_union_all.sql) (in query: /* ddl_entry=query-0000003157 */ CREATE DATABASE test_8a50uz UUID '09cc030b-a4c1-4192-89cc-030ba4c1e192' ENGINE = Replicated('/test/clickhouse/db/test_8a50uz', '{shard}', '{replica}')), Stack trace (when copying this message, always include the lines below):

  [1]: https://clickhouse-test-reports.s3.yandex.net/32019/927b9cb1c6470b6d7cd86b4c3fd2078ff43b57df/functional_stateless_tests_(release,_databasereplicated).html#fail1
2021-12-01 22:39:42 +03:00
Alexey Milovidov
d604cf5573 Remove the infamous "unbundled" build 2021-11-21 13:58:26 +03:00
Alexander Tokmakov
d095cfe4c1 disable check for zk session uptime by default 2021-10-29 14:45:09 +03:00
Azat Khuzhin
e3074cdd5a clickhouse-test: increase delay for initial SELECT 1 check
CI report [1]:

<details>

    2021-10-24 04:43:13 Server is not responding. Cannot execute 'SELECT 1' query.             If you are using split build, you have to specify -c option.
    2021-10-24 04:43:13 Cannot get server pid with pidof -s clickhouse-server, got : Command 'pidof -s clickhouse-server' returned non-zero exit status 1.

    2021-10-24 04:43:13 Thread 1 (Thread 0x7f401edd7340 (LWP 370)):
    2021-10-24 04:43:13 0  0x0000000009f9a807 in __sanitizer::StackDepotBase<>::Put(__sanitizer::StackTrace, bool*) ()
    2021-10-24 04:43:13 1  0x0000000009f9a6f7 in __sanitizer::StackDepotPut(__sanitizer::StackTrace) ()
    2021-10-24 04:43:13 2  0x0000000009f2b0e7 in __msan::MsanDeallocate(__sanitizer::StackTrace*, void*) ()
    2021-10-24 04:43:13 3  0x0000000009fa77df in operator delete(void*, unsigned long) ()
    2021-10-24 04:43:13 4  0x000000004185ffc2 in std::__1::__libcpp_operator_delete<void*, unsigned long> () at ../contrib/libcxx/include/new:245
    2021-10-24 04:43:13 5  std::__1::__do_deallocate_handle_size<>(void*, unsigned long) () at ../contrib/libcxx/include/new:271
    2021-10-24 04:43:13 6  std::__1::__libcpp_deallocate () at ../contrib/libcxx/include/new:285
    2021-10-24 04:43:13 7  std::__1::allocator<char>::deallocate () at ../contrib/libcxx/include/memory:849
    2021-10-24 04:43:13 8  std::__1::allocator_traits<std::__1::allocator<char> >::deallocate () at ../contrib/libcxx/include/__memory/allocator_traits.h:476
    2021-10-24 04:43:13 9  std::__1::basic_string<>::~basic_string (this=0x70400000efe8) at ../contrib/libcxx/include/string:2219
    2021-10-24 04:43:13 10 Poco::XML::ContextLocator::~ContextLocator (this=0x70400000efc0) at ../contrib/poco/XML/src/ParserEngine.cpp:53
    2021-10-24 04:43:13 11 0x000000004186010d in Poco::XML::ContextLocator::~ContextLocator (this=0x70400000efc0) at ../contrib/poco/XML/src/ParserEngine.cpp:52
    2021-10-24 04:43:13 12 0x000000004184af75 in Poco::XML::ParserEngine::popContext (this=<optimized out>) at ../contrib/poco/XML/src/ParserEngine.cpp:599
    2021-10-24 04:43:13 13 Poco::XML::ParserEngine::parse (this=<optimized out>, pInputSource=0x706000003720) at ../contrib/poco/XML/src/ParserEngine.cpp:234
    2021-10-24 04:43:13 14 0x000000004184880e in Poco::XML::SAXParser::parse (this=<optimized out>, systemId=...) at ../contrib/poco/XML/src/SAXParser.cpp:201
    2021-10-24 04:43:13 15 0x00000000417f3eeb in Poco::XML::DOMBuilder::parse (this=<optimized out>, uri=...) at ../contrib/poco/XML/src/DOMBuilder.cpp:69
    2021-10-24 04:43:13 16 0x00000000417f2946 in Poco::XML::DOMParser::parse (this=<optimized out>, uri=...) at ../contrib/poco/XML/src/DOMParser.cpp:102
    2021-10-24 04:43:13 17 0x000000003741dd6c in DB::ConfigProcessor::processConfig (this=this@entry=0x7fff89847130, has_zk_includes=has_zk_includes@entry=0x7fff898470f7, zk_node_cache=zk_node_cache@entry=0x0, zk_changed_event=...) at ../src/Common/Config/ConfigProcessor.cpp:570
    2021-10-24 04:43:13 18 0x0000000037427bb7 in DB::ConfigProcessor::loadConfig (this=<optimized out>, allow_zk_includes=true) at ../src/Common/Config/ConfigProcessor.cpp:657
    2021-10-24 04:43:13 19 0x000000003743fb76 in DB::ConfigReloader::reloadIfNewer (this=this@entry=0x712000002700, force=true, throw_on_error=true, fallback_to_preprocessed=true, initial_loading=true) at ../src/Common/Config/ConfigReloader.cpp:96
    2021-10-24 04:43:13 20 0x000000003743d85e in DB::ConfigReloader::ConfigReloader() () at ../src/Common/Config/ConfigReloader.cpp:33
    2021-10-24 04:43:13 21 0x0000000009fd3efb in std::__1::make_unique<>() (__args=<optimized out>, __args=<optimized out>, __args=<optimized out>, __args=<optimized out>, __args=<optimized out>, __args=<optimized out>, __args=<optimized out>) at ../contrib/libcxx/include/memory:2068
    2021-10-24 04:43:13 22 DB::Server::main (this=<optimized out>) at ../programs/server/Server.cpp:803
    2021-10-24 04:43:13 23 0x000000004175c5f9 in Poco::Util::Application::run (this=<optimized out>) at ../contrib/poco/Util/src/Application.cpp:334
    2021-10-24 04:43:13 24 0x0000000009fb5d7f in DB::Server::run (this=<optimized out>) at ../programs/server/Server.cpp:405

</details>

  [1]: https://clickhouse-test-reports.s3.yandex.net/30611/5ff6c5536558821824d5fdf25a75729e5b82060d/functional_stateless_tests_(memory).html#fail1
2021-10-24 19:04:36 +03:00
Azat Khuzhin
09b782a52e Increase default wait of the server start in clickhouse-test
Set --server-check-retries to 90 (and this is ~45 seconds), since right
now sometimes it is not enough [1].

  [1]: https://clickhouse-test-reports.s3.yandex.net/30191/0e34a9d550cfe6924fe575871f36c44dd44acdaa/functional_stateless_tests_(memory).html#fail1

And the reason I guess is clickhouse-test had been rewritten to
http.client in #30065, and since now it does not need to execute
clickhouse-client binary, which in debug/sanitizers builds can take also
sometime.
That said that with clickhouse-client for hung check it was not 15
seconds, but more (each clickhouse-client requires 0.6sec with
sanitizers for simple SELECT 1, while w/o 0.1second, also too much
should be optimized)
2021-10-18 10:46:02 +03:00
Azat Khuzhin
612a21cc97 clickhouse-test: do not propagate CLICKHOUSE_PORT_HTTP to clickhouse-client 2021-10-16 17:59:56 +03:00
Azat Khuzhin
c6e61e9497 clickhouse-test: use splitlines() over split('\n') 2021-10-16 17:59:56 +03:00
Azat Khuzhin
3102d24872 Fix --hung-check in clickhouse-test
JSONEachRow cannot be parsed with a simple json.loads(), instead it
should be passed to json.loads() line by line.

Fixes: #30065
2021-10-16 17:59:56 +03:00
Azat Khuzhin
e5bc573250 clickhouse-test: fix hung check in stress test by using system database 2021-10-13 00:19:16 +03:00
Azat Khuzhin
8d7798fa2e clickhouse-test: do not guard CREATE DATABASE with try/catch
Since it will not configure testcase args and fail eventually, and later
we have a try/catch anyway, this should be enough.
2021-10-12 22:39:43 +03:00
Azat Khuzhin
40d210367f clickhouse-test: fix catching of timeouts 2021-10-12 22:33:41 +03:00
Azat Khuzhin
427c428a27 clickhouse-test: process some options regardless --client 2021-10-12 22:30:34 +03:00
Azat Khuzhin
8dc8674298 clickhouse-test: process --client-option 2021-10-12 22:30:16 +03:00
Azat Khuzhin
fe90c979b5 clickhouse-test: fix redirect to stderr
Before #29856 `CREATE DATABASE` overwrites it.

Reported-by: @amosbird
2021-10-12 22:18:39 +03:00
Azat Khuzhin
50b95bd89d clickhouse-test: passthrough log_comment for DROP DATABASE too 2021-10-12 21:09:48 +03:00
Azat Khuzhin
e2e62ce273 clickhouse-test: replace clickhouse-driver with http interface (via http.client)
Cons of clickhouse-driver:
- it is one more extra dependency
- it does not have correct timeouts (only for socket operations, and
  this is not the same, so we need to set timeout by ourself)
- it is one more thing which can break (@alesapin)
2021-10-12 21:08:33 +03:00
alesapin
3ae960e04b Review fixes 2021-10-11 16:40:12 +03:00
alesapin
59a78830f9 Better timeouts in clickhouse-test 2021-10-11 14:46:01 +03:00
Azat Khuzhin
42ca2b4bb2 clickhouse-test: remove not existing options for pylint
https://clickhouse-test-reports.s3.yandex.net/29856/e2d6698244d43979b3fe2478dfdcd8dc3a91a0fd/style_check/test_run.txt.out.log
2021-10-09 01:43:00 +03:00
Azat Khuzhin
5d6da023bb clickhouse-test: fix hung check under stress tests
https://clickhouse-test-reports.s3.yandex.net/29856/e2d6698244d43979b3fe2478dfdcd8dc3a91a0fd/stress_test_(address).html#fail1
2021-10-09 01:42:08 +03:00
Azat Khuzhin
e2d6698244 clickhouse-test: do not use persistent connection for simplicity (due to threads) 2021-10-08 00:09:37 +03:00
Azat Khuzhin
df129d7efc Rewrite clickhouse-test to use python clickhouse_driver
Pros:
- Using native protocol over executing binaries is always better
- `clickhouse-client` in debug build takes almost a second to execute simple `SELECT 1`
  and `clickhouse-test` requires ~5 queries at start (determine some
  flags, zk, alive, create database)

Notes:
- `FORMAT Vertical` had been replaced with printing of `pandas.DataFrame`

And after this patch tiny tests work with the speed of the test, and
does not requires +-5 seconds of bootstrapping.
2021-10-08 00:09:37 +03:00
Azat Khuzhin
9dd0fca1ed Suppress some existed warnings in clickhouse-test (will be fixed separately) 2021-10-08 00:09:37 +03:00
tavplubix
75be60ff22
Merge pull request #29452 from azat/clickhouse-test-fix-term
clickhouse-test: fix shared list object (by fixing manager lifetime)
2021-09-28 22:34:21 +03:00
Azat Khuzhin
985e8ee061 clickhouse-test: fix shared list object (by fixing manager lifetime)
Right now it is possible to get the following error:

    Having 20 errors! 0 tests passed. 0 tests skipped. 57.37 s elapsed (MainProcess).
    Won't run stateful tests because test data wasn't loaded.
    Traceback (most recent call last):
      File "/usr/lib/python3.9/multiprocessing/managers.py", line 802, in _callmethod
        conn = self._tls.connection
    AttributeError: 'ForkAwareLocal' object has no attribute 'connection'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/src/ch/clickhouse/.cmake/../tests/clickhouse-test", line 1462, in <module>
        main(args)
      File "/src/ch/clickhouse/.cmake/../tests/clickhouse-test", line 1261, in main
        if len(restarted_tests) > 0:
      File "<string>", line 2, in __len__
      File "/usr/lib/python3.9/multiprocessing/managers.py", line 806, in _callmethod
        self._connect()
      File "/usr/lib/python3.9/multiprocessing/managers.py", line 793, in _connect
        conn = self._Client(self._token.address, authkey=self._authkey)
      File "/usr/lib/python3.9/multiprocessing/connection.py", line 507, in Client
        c = SocketClient(address)
      File "/usr/lib/python3.9/multiprocessing/connection.py", line 635, in SocketClient
        s.connect(address)
    ConnectionRefusedError: [Errno 111] Connection refused

The reason behind this is that manager's thread got terminated:

    ipdb> p restarted_tests._manager._process
    <ForkProcess name='SyncManager-1' pid=25125 parent=24939 stopped exitcode=-SIGTERM>

Refs: #29259 (cc: @vdimir)
Follow-up for: #29197 (cc: @tavplubix)
2021-09-27 21:10:59 +03:00
Azat Khuzhin
8be6a59e65 clickhouse-test: fix long tag check for flaky check (--test-runs > 1)
Otherwise it will mark the test as failed, like in [1].

  [1]: https://clickhouse-test-reports.s3.yandex.net/29369/2320be204397bbb9f9a673cf093b7967fd37a107/functional_stateless_tests_flaky_check_(address).html#fail1

Follow-up for: #28909 (Cc: @vitlibar)
2021-09-27 21:10:14 +03:00
tavplubix
1c9778603f
Update clickhouse-test 2021-09-27 11:43:00 +03:00
Vladimir C
c83e2f6fd4
Merge pull request #29259 from vdimir/test-global-multiproc-fix 2021-09-22 17:47:08 +03:00
tavplubix
7712d0e9df
Update clickhouse-test 2021-09-22 16:17:51 +03:00
vdimir
3a42d11b65
Initialize global variables for multiproc in __main__ in clickhouse-test 2021-09-22 16:00:59 +03:00
tavplubix
e0ce179aa8
Minor improvements in clickhouse-test (#29197)
* minor improvements in clickhouse-test

* use enums

* Update clickhouse-test
2021-09-22 11:42:46 +03:00
tavplubix
66bc619c3e
Merge pull request #28983 from ClickHouse/func_zookeeper_session_uptime
Add function zookeeperSessionUptime(), fix some flaky tests
2021-09-20 14:47:49 +03:00
tavplubix
5fdd2b67ee
Update clickhouse-test 2021-09-19 01:05:17 +03:00
Alexander Tokmakov
5c605189ac Merge branch 'master' into func_zookeeper_session_uptime 2021-09-15 21:10:06 +03:00
Alexander Tokmakov
be45ed5fde better check for session expiration in clickhouse-test 2021-09-13 16:36:05 +03:00