mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-02 04:56:58 +00:00
c93b56034d5c580df6699b602d9fbc440bbebf3d
The functions in cql_assertions.hh are very convenient, but have one frustrating drawback: When you have many of those assertions in one test, it's very hard to know *which* of the similar assertions failed. The problem is that an error often looks like this: unknown location(0): fatal error: in "test_many_columns": std::runtime_error: Expected 2 row(s) but got 0 tests/cql_assertions.cc(131): last checkpoint Which of the many similar checks in "test_many_columns" failed? Note the unhelpful "unknown location" and also the "last checkpoint" points to code in cql_assertions.cc, not in the actual test, so it is useless. The root cause of these problems is that the Boost macros use the C preprocessor __FILE__ and __LINE__, which in actual C++ functions like is_rows() remembers its location, instead of the caller. Fixing this will not be simple. But this patch has a much simpler solution - fixing the "last checkpoint". What ruins the last checkpoint is the use of BOOST_REQUIRE inside the cql_assertions.cc is_rows() - when that succeeds, it records the location inside cql_assertions.cc (!) as the last success. If we just replace BOOST_REQUIRE by our own test (just like in the rest of the cql_assertions.cc code), this code will not override the last checkpoint. The user can see the last real successful BOOST_REQUIRE, or use BOOST_TEST_PASSPOINT() to set his own checkpoints between different parts of the same test. After this patch, and with adding BOOST_TEST_PASSPOINT() calls between different parts of my test, the failure above now looks like: unknown location(0): fatal error: in "test_many_columns": std::runtime_error: Expected 2 row(s) but got 0 tests/secondary_index_test.cc(299): last checkpoint The "last checkpoint" now shows me exactly where my failing check was. Signed-off-by: Nadav Har'El <nyh@scylladb.com> Message-Id: <20180501152638.26238-1-nyh@scylladb.com>
…
…
…
Scylla
Quick-start
$ git submodule update --init --recursive
$ sudo ./install-dependencies.sh
$ ./configure.py --mode=release
$ ninja-build -j4 # Assuming 4 system threads.
$ ./build/release/scylla
$ # Rejoice!
Please see HACKING.md for detailed information on building and developing Scylla.
Running Scylla
- Run Scylla
./build/release/scylla
- run Scylla with one CPU and ./tmp as data directory
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
- For more run options:
./build/release/scylla --help
Building Fedora RPM
As a pre-requisite, you need to install Mock on your machine:
# Install mock:
sudo yum install mock
# Add user to the "mock" group:
usermod -a -G mock $USER && newgrp mock
Then, to build an RPM, run:
./dist/redhat/build_rpm.sh
The built RPM is stored in /var/lib/mock/<configuration>/result directory.
For example, on Fedora 21 mock reports the following:
INFO: Done(scylla-server-0.00-1.fc21.src.rpm) Config(default) 20 minutes 7 seconds
INFO: Results and/or logs in: /var/lib/mock/fedora-21-x86_64/result
Building Fedora-based Docker image
Build a Docker image with:
cd dist/docker
docker build -t <image-name> .
Run the image with:
docker run -p $(hostname -i):9042:9042 -i -t <image name>
Contributing to Scylla
Description
Languages
C++
72.2%
Python
26.6%
CMake
0.3%
GAP
0.3%
Shell
0.3%