1. 03 Nov, 2020 2 commits
    • Kirill Smelkov's avatar
      t/tfault-run: Require bash · a702d410
      Kirill Smelkov authored
      Otherwise when /bin/sh is dash it fails with
      
          t/tfault-run: 35: test: on_pagefault: unexpected operator
      a702d410
    • Kirill Smelkov's avatar
      t/tfault-run: Clear state from previous run before starting · cf92dfca
      Kirill Smelkov authored
      Otherwise, if previous test.fault failed, tfault-run fails to start, e.g.
      
          >>> test.fault
          $ make test.fault # MAKEFLAGS=-j1
          x86_64-linux-gnu-gcc -pthread -g -Wall -D_GNU_SOURCE -std=gnu99 -fplan9-extensions -Wno-declaration-after-statement -Wno-error=declaration-after-statement  -Iinclude -I3rdparty/ccan -I3rdparty/include   bigfile/tests/tfault.c lib/bug.c lib/utils.c 3rdparty/ccan/ccan/tap/tap.c  -o bigfile/tests/tfault.t
          t/tfault-run bigfile/tests/tfault.t faultr on_pagefault
          mkdir: cannot create directory ‘t/tfault-run.faultr’: File exists
          Makefile:186: recipe for target 'faultr.tfault' failed
          make: *** [faultr.tfault] Error 1
          rm bigfile/tests/tfault.t
          error   test.fault      0.433s  # 1t 1e 0f 0s
      cf92dfca
  2. 11 Oct, 2020 3 commits
  3. 16 Dec, 2019 1 commit
  4. 04 Dec, 2019 1 commit
  5. 03 Dec, 2019 1 commit
  6. 12 Jul, 2019 1 commit
  7. 09 Jul, 2019 1 commit
  8. 08 Jul, 2019 1 commit
    • Kirill Smelkov's avatar
      bigfile: RAM must be explicitly free'ed after close · f688a31d
      Kirill Smelkov authored
      Else on-heap allocated RAM object is leaked. Fixes e.g. the following
      error on ASAN:
      
      	Direct leak of 56 byte(s) in 1 object(s) allocated from:
      	    #0 0x7fc9ef390518 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe9518)
      	    #1 0x555ca792f309 in zalloc include/wendelin/utils.h:67
      	    #2 0x555ca7935f9a in ram_limited_new bigfile/tests/../../t/t_utils.c:35
      	    #3 0x555ca793a0ba in test_file_access_synthetic bigfile/tests/test_virtmem.c:292
      	    #4 0x555ca7967bc4 in main bigfile/tests/test_virtmem.c:1121
      	    #5 0x7fc9ef0e909a in __libc_start_main ../csu/libc-start.c:308
      f688a31d
  9. 03 May, 2019 2 commits
    • Kirill Smelkov's avatar
      t/qemu-runlinux: Issue terminal init before running program · 89fb8992
      Kirill Smelkov authored
      This continues 6ab95220 (t/qemu-runlinux: Issue terminal resize before
      running program) and fully initializes terminal before spawning user
      application.
      
      This has practical effect to restore line wrapping for xterm, as kernel,
      initially assuming it has "linux" type terminal, somehow messes xterm
      settings: before the patch lines that were wider than terminal width were
      not wrapped and characters in the last position were printed over each
      other. After the patch printed lines are automatically wrapped and test
      output is not lost.
      
      Tput hint found here:
      
      	https://unix.stackexchange.com/questions/105958
      89fb8992
    • Kirill Smelkov's avatar
      . · bd24d52e
      Kirill Smelkov authored
      bd24d52e
  10. 17 Mar, 2019 2 commits
    • Kirill Smelkov's avatar
      t/qemu-runlinux: Kernel verbosity control via -v · 208aca62
      Kirill Smelkov authored
      	0: ERROR+ on boot/run
      	1: INFO+  on      run
      	2: INFO+  on boot/run
      	3: DEBUG+ on boot/run
      
      It is convenient not to see large kernel boot log on every test run. "1"
      (single -v) is also convenient: one can skip the boot log but still see
      details of what is going on when test workload is run. -vv and -vvv are
      there to see full picture.
      208aca62
    • Kirill Smelkov's avatar
      . · daec8705
      Kirill Smelkov authored
      daec8705
  11. 27 Feb, 2019 3 commits
  12. 13 Feb, 2019 2 commits
    • Kirill Smelkov's avatar
      t/qemu-runlinux: Update · fe541453
      Kirill Smelkov authored
      Continuing 76d8f76d (Script to run compiled linux kernel with root fs
      mounted from host) update the script to run/debug linux inside QEMU:
      
      - teach it to run specified program + args, instead of hardcoded /bin/sh;
      - before tailing to user program, builtin init mounts /proc, /sys, ...
        inside - previously it was /proc, /sys from host seen on those
        mountpoints and it was very misleading - e.g. ps was showing processes
        from host, not inside, etc.
      - builtin init also cares to run specified program with the same current
        directory that was current on host, and environments such as $HOME,
        $PATH, $TERM, ... are also propagated.
      - allow to optionally run QEMU with graphics, instead of stdout only;
      - increase available RAM from 128M to 512M (with 128M running py.test
        inside is failing with fork: not enough memory).
      
      This updated version was useful to debug WCFS(*) & FUSE issues by running
      
      	kirr@deco:~/src/wendelin/wendelin.core/wcfs$ ../t/qemu-runlinux ~/src/linux/linux/arch/x86_64/boot/bzImage py.test -vsx -k test_wcfs
      
      See https://marc.info/?l=linux-fsdevel&m=155000277921155&w=2 for details.
      
      (*) WCFS is still being draft and worked on t branch.
      fe541453
    • Kirill Smelkov's avatar
      . · e23c133e
      Kirill Smelkov authored
      e23c133e
  13. 12 Feb, 2019 1 commit
  14. 11 Feb, 2019 5 commits
  15. 26 Oct, 2018 1 commit
    • Kirill Smelkov's avatar
      X xnumpy.restructure · 2569b175
      Kirill Smelkov authored
      Currently fails with:
      
      /home/kirr/src/wendelin/wendelin.core/lib/xnumpy.py in restructure(arr, dtype)
           82     print 'stridev:', stridev
           83     #return np.ndarray.__new__(type(arr), shape, dtype, buffer(arr), 0, stridev)
      ---> 84     return np.ndarray(shape, dtype, buffer(arr), 0, stridev)
      
      TypeError: expected a single-segment buffer object
      2569b175
  16. 11 Oct, 2018 1 commit
  17. 04 Jul, 2018 1 commit
    • Kirill Smelkov's avatar
      py.bench: Move it to -> pygolang · 318efce0
      Kirill Smelkov authored
      So that it can be available to everyone and in particular B & friends to
      be available from introduced importable golang.testing package. The move
      itself:
      
      	pygolang@9bf03d9c
      
      While moving the code was restructured / improved a bit and py.bench
      interface reworked to mimic `go test -bench` in defaults.
      318efce0
  18. 26 Jun, 2018 2 commits
  19. 12 Dec, 2017 1 commit
    • Kirill Smelkov's avatar
      virtmem: Benchmarks for pagefault handling · 3cfc2728
      Kirill Smelkov authored
      Benchmark the time it takes for virtmem to handle pagefault with noop
      loadblk for loadblk both implemented in C and in Python.
      
      On my computer it is:
      
      	name          µs/op
      	PagefaultC    269 ± 0%
      	pagefault_py  291 ± 0%
      
      Quite a big time in other words.
      
      It turned out to be mostly spent in fallocate'ing pages on tmpfs from
      /dev/shm. Part of the above 269 µs/op is taken by freeing (reclaiming)
      pages back when benchmarking work size exceed /dev/shm size, and part to
      allocating.
      
      If I limit the work size (via npage in benchmem.c) to be less than whole
      /dev/shm it starts to be ~ 170 µs/op and with additional tracing it
      shows as something like this:
      
          	.. on_pagefault_start   0.954 µs
          	.. vma_on_pagefault_pre 0.954 µs
          	.. ramh_alloc_page_pre  0.954 µs
          	.. ramh_alloc_page      169.992 µs
          	.. vma_on_pagefault     172.853 µs
          	.. vma_on_pagefault_pre 172.853 µs
          	.. vma_on_pagefault     174.046 µs
          	.. on_pagefault_end     174.046 µs
          	.. whole:               171.900 µs
      
      so almost all time is spent in ramh_alloc_page which is doing the fallocate:
      
      	https://lab.nexedi.com/nexedi/wendelin.core/blob/f11386a4/bigfile/ram_shmfs.c#L125
      
      Simple benchmark[1] confirmed it is indeed the case for fallocate(tmpfs) to be
      relatively slow[2] (and that for recent kernels it regressed somewhat
      compared to Linux 3.16). Profile flamegraph for that benchmark[3] shows
      internal loading of shmem_fallocate which for 1 hardware page is not
      that too slow (e.g. <1µs) but when a request comes for a region
      internally performs it page by page and so accumulates that ~ 170µs for 2M.
      
      I've tried to briefly rerun the benchmark with huge pages activated on /dev/shm via
      
      	mount /dev/shm -o huge=always,remount
      
      as both regular user and as root but it was executing several times
      slower. Probably something to investigate more later.
      
      [1] https://lab.nexedi.com/kirr/misc/blob/4f84a06e/tmpfs/t_fallocate.c
      [2] https://lab.nexedi.com/kirr/misc/blob/4f84a06e/tmpfs/1.txt
      [3] https://lab.nexedi.com/kirr/misc/raw/4f84a06e/tmpfs/fallocate-2M-nohuge.svg
      3cfc2728
  20. 06 Dec, 2017 1 commit
    • Kirill Smelkov's avatar
      py.bench: Rework output to match Go benchmarking format · 51f252d4
      Kirill Smelkov authored
      Rework py.bench output to match output of Go benchmarking[1] so that go
      tools like benchstat & friends could be used to analyze and compare the
      timings.
      
      Before patch:
      
      ============================= test session starts ==============================
      platform linux2 -- Python 2.7.14, pytest-3.3.2.dev2+g88f2cc9b.d20171206, py-1.5.2, pluggy-0.6.0
      rootdir: /home/kirr/src/wendelin/wendelin.core, inifile:
      collected 11 items
      
      pymod: bigfile/tests/bench_0virtmem.py
      bench_file_mmapread_hole	0.21  (0.39 0.22 0.21)
      bench_file_read_hole    	0.24  (0.24 0.24 0.24)
      bench_file_readbig_hole 	0.30  (0.30 0.31 0.31)
      bench_bigf_read_hole    	0.44  (0.44 0.45 0.44)
      bench_file_mmapwrite0   	0.13  (0.13 0.13 0.13)
      bench_file_write55      	0.08  (0.08 0.08 0.08)
      bench_bigf_writeff      	0.47  (0.47 0.48 0.47)
      bench_file_mmapread     	0.22  (0.22 0.22 0.22)
      bench_file_read         	0.25  (0.25 0.25 0.26)
      bench_file_readbig      	0.31  (0.31 0.31 0.31)
      bench_bigf_read         	0.44  (0.45 0.44 0.44)
      
      ========================== 11 passed in 12.92 seconds ==========================
      
      After patch:
      
      ============================= test session starts ==============================
      platform linux2 -- Python 2.7.14, pytest-3.3.2.dev2+g88f2cc9b.d20171206, py-1.5.2, pluggy-0.6.0
      rootdir: /home/kirr/src/wendelin/wendelin.core, inifile:
      collected 11 items
      
      pymod: bigfile/tests/bench_0virtmem.py
      Benchmarkfile_mmapread_hole	1	385839.939 µs/op
      Benchmarkfile_mmapread_hole	1	219214.916 µs/op
      Benchmarkfile_mmapread_hole	1	210209.131 µs/op
      Benchmarkfile_read_hole    	1	238974.094 µs/op
      Benchmarkfile_read_hole    	1	237294.197 µs/op
      Benchmarkfile_read_hole    	1	238043.070 µs/op
      Benchmarkfile_readbig_hole 	1	301330.090 µs/op
      Benchmarkfile_readbig_hole 	1	301767.111 µs/op
      Benchmarkfile_readbig_hole 	1	301135.063 µs/op
      Benchmarkbigf_read_hole    	1	434718.132 µs/op
      Benchmarkbigf_read_hole    	1	435019.970 µs/op
      Benchmarkbigf_read_hole    	1	434729.099 µs/op
      Benchmarkfile_mmapwrite0   	1	126471.996 µs/op
      Benchmarkfile_mmapwrite0   	1	125886.917 µs/op
      Benchmarkfile_mmapwrite0   	1	125730.038 µs/op
      Benchmarkfile_write55      	1	86760.044 µs/op
      Benchmarkfile_write55      	1	87507.010 µs/op
      Benchmarkfile_write55      	1	87735.891 µs/op
      Benchmarkbigf_writeff      	1	448369.980 µs/op
      Benchmarkbigf_writeff      	1	448238.850 µs/op
      Benchmarkbigf_writeff      	1	447322.845 µs/op
      Benchmarkfile_mmapread     	1	207049.131 µs/op
      Benchmarkfile_mmapread     	1	207813.978 µs/op
      Benchmarkfile_mmapread     	1	210857.868 µs/op
      Benchmarkfile_read         	1	238364.935 µs/op
      Benchmarkfile_read         	1	236908.913 µs/op
      Benchmarkfile_read         	1	238602.161 µs/op
      Benchmarkfile_readbig      	1	303429.842 µs/op
      Benchmarkfile_readbig      	1	302191.973 µs/op
      Benchmarkfile_readbig      	1	304115.057 µs/op
      Benchmarkbigf_read         	1	435079.098 µs/op
      Benchmarkbigf_read         	1	434193.850 µs/op
      Benchmarkbigf_read         	1	434813.976 µs/op
      
      ========================== 11 passed in 12.54 seconds ==========================
      
      benchstat of new output:
      
      	name                µs/op
      	file_mmapread_hole   272k ±42%
      	file_read_hole       238k ± 0%
      	file_readbig_hole    301k ± 0%
      	bigf_read_hole       435k ± 0%
      	file_mmapwrite0      126k ± 0%
      	file_write55        87.3k ± 1%
      	bigf_writeff         448k ± 0%
      	file_mmapread        209k ± 1%
      	file_read            238k ± 0%
      	file_readbig         303k ± 0%
      	bigf_read            435k ± 0%
      
      --------
      
      Not only the output format is reworked here, but also b fixture is added
      to BenchPlugin so that functions which accept it as arg, can run the
      benchmark b.N times, can stop/restart timer etc - similar to
      https://golang.org/pkg/testing/#B . If a bench_* func does not accept b,
      B is still created, but b.N is assumed to be always 1.
      
      The first benchmark which actually uses b will come in the next patch.
      
      [1] https://github.com/golang/proposal/blob/master/design/14313-benchmark-format.md
      51f252d4
  21. 04 Dec, 2017 2 commits
    • Kirill Smelkov's avatar
      py.bench: Less noisy output · 074ce24d
      Kirill Smelkov authored
      For several benchmarks in a python module instead of always printing
      whole benchmark function path (nodeid in pytest speak), first print
      
      	pymod: modulename
      
      header, and then only function names.
      
      Before patch:
      
      ============================= test session starts ==============================
      platform linux2 -- Python 2.7.14, pytest-3.3.0, py-1.5.2, pluggy-0.6.0
      rootdir: /home/kirr/src/wendelin/wendelin.core, inifile:
      collected 14 items
      
      bigfile/tests/bench_0virtmem.py::bench_file_mmapread_hole 	0.22  (0.39 0.22 0.22)
      bigfile/tests/bench_0virtmem.py::bench_file_read_hole    	0.24  (0.24 0.24 0.24)
      bigfile/tests/bench_0virtmem.py::bench_file_readbig_hole 	0.30  (0.30 0.30 0.30)
      bigfile/tests/bench_0virtmem.py::bench_bigf_read_hole    	0.43  (0.43 0.43 0.43)
      bigfile/tests/bench_0virtmem.py::bench_file_mmapwrite0   	0.12  (0.13 0.12 0.13)
      bigfile/tests/bench_0virtmem.py::bench_file_write55      	0.08  (0.08 0.08 0.08)
      bigfile/tests/bench_0virtmem.py::bench_bigf_writeff      	0.45  (0.45 0.45 0.45)
      bigfile/tests/bench_0virtmem.py::bench_file_mmapread     	0.21  (0.21 0.21 0.22)
      bigfile/tests/bench_0virtmem.py::bench_file_read         	0.23  (0.23 0.24 0.24)
      bigfile/tests/bench_0virtmem.py::bench_file_readbig      	0.30  (0.30 0.30 0.30)
      bigfile/tests/bench_0virtmem.py::bench_bigf_read         	0.43  (0.44 0.43 0.44)
      bigfile/tests/bench_1filezodb.py::bench_bigz_readhole    	0.42  (0.42 0.43 0.43)
      bigfile/tests/bench_1filezodb.py::bench_bigz_writeff     	0.84  (0.84 1.25 1.25)
      bigfile/tests/bench_1filezodb.py::bench_bigz_read        	0.60  (0.64 0.60 0.60)
      ========================== 14 passed in 21.78 seconds ==========================
      
      After patch:
      
      ============================= test session starts ==============================
      platform linux2 -- Python 2.7.14, pytest-3.3.0, py-1.5.2, pluggy-0.6.0
      rootdir: /home/kirr/src/wendelin/wendelin.core, inifile:
      collected 14 items
      
      pymod: bigfile/tests/bench_0virtmem.py
      bench_file_mmapread_hole	0.21  (0.39 0.22 0.21)
      bench_file_read_hole    	0.24  (0.24 0.24 0.24)
      bench_file_readbig_hole 	0.30  (0.30 0.30 0.30)
      bench_bigf_read_hole    	0.43  (0.43 0.43 0.43)
      bench_file_mmapwrite0   	0.12  (0.13 0.12 0.13)
      bench_file_write55      	0.08  (0.08 0.08 0.08)
      bench_bigf_writeff      	0.45  (0.52 0.51 0.45)
      bench_file_mmapread     	0.21  (0.21 0.21 0.21)
      bench_file_read         	0.24  (0.24 0.24 0.24)
      bench_file_readbig      	0.30  (0.30 0.30 0.30)
      bench_bigf_read         	0.43  (0.43 0.43 0.43)
      
      pymod: bigfile/tests/bench_1filezodb.py
      bench_bigz_readhole     	0.43  (0.43 0.43 0.43)
      bench_bigz_writeff      	0.83  (0.83 1.20 1.21)
      bench_bigz_read         	0.60  (0.65 0.60 0.60)
      
      ========================== 14 passed in 21.80 seconds ==========================
      
      The `key: value` header is compatible with Go benchmark format[1] and
      further we'll be trying to teach py.bench to output results in that
      format so that Go benchmarking tools like benchstat and perf.golang.org
      could be used for free.
      
      [1] https://github.com/golang/proposal/blob/master/design/14313-benchmark-format.md
      074ce24d
    • Kirill Smelkov's avatar
      py.bench: Fix output reporting · ed13c3f9
      Kirill Smelkov authored
      Upstream pytest changed TerminalReporter._locationline() signature from
      
      	def _locationline(self, collect_fspath, fspath, lineno, domain):
      
      to
      
      	def _locationline(self, nodeid, fspath, lineno, domain):
      
      https://github.com/pytest-dev/pytest/commit/d73e6899 .
      
      This way without adjusting py.bench was reporting just filenames instead
      of benchmark names, e.g. this way:
      
      (z-dev) kirr@deco:~/src/wendelin/wendelin.core$ ./t/py.bench bigfile/tests/bench_0virtmem.py
      =============================================================== test session starts ===============================================================
      platform linux2 -- Python 2.7.14, pytest-3.3.0, py-1.5.2, pluggy-0.6.0
      rootdir: /home/kirr/src/wendelin/wendelin.core, inifile:
      collected 11 items
      
      bigfile/tests/bench_0virtmem.py                                 0.21  (0.38 0.22 0.21)
      bigfile/tests/bench_0virtmem.py                                 0.23  (0.23 0.24 0.23)
      bigfile/tests/bench_0virtmem.py                                 0.30  (0.30 0.30 0.30)
      bigfile/tests/bench_0virtmem.py                                 0.43  (0.43 0.43 0.43)
      bigfile/tests/bench_0virtmem.py                                 0.12  (0.12 0.12 0.12)
      bigfile/tests/bench_0virtmem.py                                 0.08  (0.08 0.08 0.08)
      bigfile/tests/bench_0virtmem.py                                 0.44  (0.44 0.44 0.44)
      bigfile/tests/bench_0virtmem.py                                 0.20  (0.20 0.20 0.21)
      bigfile/tests/bench_0virtmem.py                                 0.24  (0.24 0.24 0.24)
      bigfile/tests/bench_0virtmem.py                                 0.30  (0.30 0.30 0.30)
      bigfile/tests/bench_0virtmem.py                                 0.43  (0.43 0.43 0.43)
      
      =========================================================== 11 passed in 12.39 seconds ============================================================
      
      Fix it.
      ed13c3f9
  22. 02 Dec, 2017 1 commit
    • Kirill Smelkov's avatar
      py.bench: Fix report.bench_time collect · fc08766d
      Kirill Smelkov authored
      In pytest3 pytest_runtest_call hook is always run as multicall and there
      is no way to control to disable it and force e.g. 'firstresult'
      behaviour. This way call.result in pytest_runtest_makereport is always a
      list of returned results, not the first result itself.
      
      Adjust the code in pytest_runtest_makereport to emulate 'firstresult'
      behaviour manually.
      
      Without the patch with recent pytest py.bench was crashing like this:
      
      ---- 8< ----
      (z-dev) kirr@link:~/src/wendelin/wendelin.core$ make bench
      python setup.py ll_build_ext --inplace
      running ll_build_ext
      copying build/lib.linux-x86_64-2.7/wendelin/bigfile/_bigfile.so -> bigfile
      python t/py.bench --ignore=3rdparty --ignore=build --ignore=t
      ============================================================= test session starts ==============================================================
      platform linux2 -- Python 2.7.14, pytest-3.3.0, py-1.5.2, pluggy-0.6.0
      rootdir: /home/kirr/src/wendelin/wendelin.core, inifile:
      collected 14 items
      
      bigfile/tests/bench_0virtmem.py                          	INTERNALERROR> Traceback (most recent call last):
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/_pytest/main.py", line 103, in wrap_session
      INTERNALERROR>     session.exitstatus = doit(config, session) or 0
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/_pytest/main.py", line 141, in _main
      INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 617, in __call__
      INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 222, in _hookexec
      INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 216, in <lambda>
      INTERNALERROR>     firstresult=hook.spec_opts.get('firstresult'),
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 201, in _multicall
      INTERNALERROR>     return outcome.get_result()
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 77, in get_result
      INTERNALERROR>     _reraise(*ex)  # noqa
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 180, in _multicall
      INTERNALERROR>     res = hook_impl.function(*args)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/_pytest/main.py", line 164, in pytest_runtestloop
      INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 617, in __call__
      INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 222, in _hookexec
      INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 216, in <lambda>
      INTERNALERROR>     firstresult=hook.spec_opts.get('firstresult'),
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 201, in _multicall
      INTERNALERROR>     return outcome.get_result()
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 77, in get_result
      INTERNALERROR>     _reraise(*ex)  # noqa
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 180, in _multicall
      INTERNALERROR>     res = hook_impl.function(*args)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/_pytest/runner.py", line 63, in pytest_runtest_protocol
      INTERNALERROR>     runtestprotocol(item, nextitem=nextitem)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/_pytest/runner.py", line 77, in runtestprotocol
      INTERNALERROR>     reports.append(call_and_report(item, "call", log))
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/_pytest/runner.py", line 161, in call_and_report
      INTERNALERROR>     hook.pytest_runtest_logreport(report=report)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 617, in __call__
      INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 222, in _hookexec
      INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/__init__.py", line 216, in <lambda>
      INTERNALERROR>     firstresult=hook.spec_opts.get('firstresult'),
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 201, in _multicall
      INTERNALERROR>     return outcome.get_result()
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 77, in get_result
      INTERNALERROR>     _reraise(*ex)  # noqa
      INTERNALERROR>   File "/home/kirr/src/wendelin/venv/z-dev/local/lib/python2.7/site-packages/pluggy/callers.py", line 180, in _multicall
      INTERNALERROR>     res = hook_impl.function(*args)
      INTERNALERROR>   File "t/py.bench", line 165, in pytest_runtest_logreport
      INTERNALERROR>     self._tw.write('%.2f' % min(report.bench_times))
      INTERNALERROR> TypeError: float argument required, not list
      fc08766d
  23. 01 Dec, 2017 2 commits
    • Kirill Smelkov's avatar
      py.bench: Don't forget to clear config's inicache after tweaking config.inicfg · 5a1ed45a
      Kirill Smelkov authored
      If py.test machinery access any of the keys we change before we tweak
      them - their values will be put to config._inicache and our tweaking
      won't essentially have the effect.
      
      It used to be working without explicit cache invalidation with older
      pytests, but as of e.g. py.test 3.2.1 it does not work without explicit
      cache clearing because e.g. 'python_files' is somehow accessed before
      and is set to std 'test_*.py' + friends in the cache and this way
      py.bench then does not collect benchmarks from bench_*.py files.
      
      Fix it by making sure inicache is invalidated after our inicfg tweak.
      5a1ed45a
    • Kirill Smelkov's avatar
      9e471114
  24. 24 Oct, 2017 1 commit
    • Kirill Smelkov's avatar
      Relicense to GPLv3+ with wide exception for all Free Software / Open Source... · f11386a4
      Kirill Smelkov authored
      Relicense to GPLv3+ with wide exception for all Free Software / Open Source projects + Business options.
      
      Nexedi stack is licensed under Free Software licenses with various exceptions
      that cover three business cases:
      
      - Free Software
      - Proprietary Software
      - Rebranding
      
      As long as one intends to develop Free Software based on Nexedi stack, no
      license cost is involved. Developing proprietary software based on Nexedi stack
      may require a proprietary exception license. Rebranding Nexedi stack is
      prohibited unless rebranding license is acquired.
      
      Through this licensing approach, Nexedi expects to encourage Free Software
      development without restrictions and at the same time create a framework for
      proprietary software to contribute to the long term sustainability of the
      Nexedi stack.
      
      Please see https://www.nexedi.com/licensing for details, rationale and options.
      f11386a4
  25. 15 Dec, 2015 1 commit
    • Kirill Smelkov's avatar
      bigfile: Plug memory leak in ramh_close() · 997ebacd
      Kirill Smelkov authored
      No one was freeing RAMH structure itself, and thus ASAN reports e.g.:
      
      ==15935==ERROR: LeakSanitizer: detected memory leaks
      
      Direct leak of 32 byte(s) in 1 object(s) allocated from:
          #0 0x7f29c89f1001 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x94001)
          #1 0x401da1 in zalloc include/wendelin/utils.h:65
          #2 0x408128 in shmfs_ramh_open bigfile/tests/../ram_shmfs.c:202
          #3 0x407611 in ramh_open bigfile/tests/../ram.c:81
          #4 0x402560 in fileh_open bigfile/tests/../virtmem.c:131
          #5 0x427ca1 in test_pagefault_savestate bigfile/tests/test_virtmem.c:1022
          #6 0x4281ba in main bigfile/tests/test_virtmem.c:1061
          #7 0x7f29c83b8b44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)
      
      NOTE similar leak remains open in ram_close(), but it is a bit involved
      to fix and the effort will be removed anyway after we switch to kernel
      virtual memory manager. Besides ramh are opened and closed all the time
      and ram only once.
      997ebacd