1. 01 Nov, 2020 9 commits
    • Kirill Smelkov's avatar
      Sync with NEO/py v1.10 · 1fb86fb3
      Kirill Smelkov authored
      1fb86fb3
    • Kirill Smelkov's avatar
      go/neo/proto: Version 1 -> 4 · 9efe98bb
      Kirill Smelkov authored
      This protocol version corresponds to protocol version used by NEO/py v1.10.
      
      The protocol definition was updated to match that NEO/py release in
      the previous patches.
      9efe98bb
    • Kirill Smelkov's avatar
      go/neo/proto: RequestIdentification += DevPath · db2062f5
      Kirill Smelkov authored
      This corresponds to NEO/py commit 97af23cc (Maximize resiliency by
      taking into account the topology of storage nodes).
      db2062f5
    • Kirill Smelkov's avatar
      go/neo/proto: Sync GetObject and docstrings with NEO/py · 7f67a252
      Kirill Smelkov authored
      - Rename GetObject .Tid    -> .Before
      - Rename GetObject .Serial -> .At
      - Sync docstrings
      
      This corresponds to NEO/py commit 9f0f2afe (protocol: update packet
      docstrings).
      7f67a252
    • Kirill Smelkov's avatar
      go/neo/proto: Switch enum encoding from int32 to int8 · 5f13cc85
      Kirill Smelkov authored
      This corresponds to NEO/py commit 52db5607 ("protocol: a single byte is
      more than enough to encode enums").
      5f13cc85
    • Kirill Smelkov's avatar
      go/neo/proto: Sync message type codes with NEO/py · fd3d6741
      Kirill Smelkov authored
      Don't skip a code when going request1->request2 through `Request1
      Answer1 Request2`. For example before this patch:
      
      	1		RequestIdentification
      	1 | answerBit	AcceptIdentification
      	3		Ping
      	3 | answerBit	Pong
      	...
      
      after this patch:
      
      	1		RequestIdentification
      	1 | answerBit	AcceptIdentification
      	2		Ping
      	2 | answerBit	Pong
      	...
      
      This corresponds to NEO/py commit a00ab78b ("protocol: small cleanup in
      packet registration").
      fd3d6741
    • Kirill Smelkov's avatar
      go/neo/proto: Sync CellState enums order with NEO/py · 2f783f3a
      Kirill Smelkov authored
      Corresponds to NEO/py commit b3dd6973 ("Optimize resumption of
      replication by starting from a greater TID").
      2f783f3a
    • Kirill Smelkov's avatar
      go/neo/proto: Sync OUT_OF_DATE text with NEO/py · 51605c46
      Kirill Smelkov authored
      Corresponds to NEO/py commit 3efbbfe3 ("master: automatically discard
      feeding cells that get out-of-date").
      51605c46
    • Kirill Smelkov's avatar
      Merge tag 'v1.10' into master · 57ca89d4
      Kirill Smelkov authored
      NEO 1.10
      
      * tag 'v1.10': (55 commits)
        Release version 1.10
        Maximize resiliency by taking into account the topology of storage nodes
        storage: also commit updated cell TID at each replicated chunk of 'obj' records
        storage: skip useless work when unlocking transactions
        qa: flush logs at the end of each test when -L is not used
        qa: add a log in case that a mysterious bug happens again
        storage: clarify log about data deletion of discarded cells
        debug: new example to run the profiler for 1 minute
        mysql: fix replication of big oids (> 16M)
        tests/cluster: speedup waiting a bit
        protocol: update packet docstrings
        Bump protocol version
        protocol: a single byte is more than enough to encode enums
        protocol: small cleanup in packet registration
        Optimize resumption of replication by starting from a greater TID
        importer: update comment about a workaround for ZODB3
        Micro-optimization of p64/u64
        qa: add a log in testBackupNodeLost for easier debugging
        Document that the bug when checking replicas may also cause the master to crash
        storage: stop logging 'Abort TXN' for txn that have been locked
        storage: split _migrate2() for reusable _alterTable()
        qa: new testStorageUpgrade
        qa: update testStorageUpgrade data for what is not automatically upgraded
        qa: original data for the future testStorageUpgrade
        sqlite: fix indexes of upgraded db
        importer: fix NameError when recovering during tpc_finish
        fixup! importer: fetch and process the data to import in a separate process
        Serialize empty transaction extension with an empty string
        client: fix partial import from a source storage
        qa: give a title to subprocesses of functional tests
        importer: give a title to the 'import' and 'writeback' subprocesses
        importer: fetch and process the data to import in a separate process
        importer: new option to write back new transactions to the source database
        importer: log when the transaction index for FileStorage DB is built
        importer: open imported zodb in read-only whenever possible
        fixup! mysql: fix remaining places where a server disconnection was not catched
        fixup! storage: speed up replication by sending bigger network packets
        mysql: do not full-scan for duplicates of big oids if deduplication is disabled
        mysql: fix remaining places where a server disconnection was not catched
        fixup! Add support for custom compression levels
        importer: reenable compression by default
        qa: review testImporter
        qa: remove a few uses of 'chr'
        Fix a few issues with ZODB5
        importer: small code cleanup in speedupFileStorageTxnLookup patch
        importer: do not trigger speedupFileStorageTxnLookup uselessly
        Add support for custom compression levels
        setup: update MANIFEST.in
        importer: do not checksum data twice
        client: store uncompressed if compressed size is equal
        fixup! master: automatically discard feeding cells that get out-of-date
        master: automatically discard feeding cells that get out-of-date
        qa: remove useless indentation in testSafeTweak
        bench: new option to mesure ZEO perfs in matrix test
        bench: reduce number of partitions in matrix test
        storage: fix replication of creation undone
      57ca89d4
  2. 16 Oct, 2020 1 commit
    • Kirill Smelkov's avatar
      go/zodb/zeo: Skip handshake/py/msgpack=true on ZEO4 · 6d9a8046
      Kirill Smelkov authored
      ZEO4 does not have msgpack support and does not take $ZEO_MSGPACK into
      account. With ZEO4 this test was failing before:
      
      	--- FAIL: TestHandshake (0.46s)
      	    --- FAIL: TestHandshake/py/msgpack=true (0.24s)
      	        zeo_test.go:241: handshake: encoding=Z  ; want M
      
      We don't have infrastructure to check python packages versions, so
      check it by verifying ZEO.asyncio presence.
      6d9a8046
  3. 12 Oct, 2020 1 commit
    • Kirill Smelkov's avatar
      go/zodb/zeo: Fix initialization when server database is empty · 1df5acab
      Kirill Smelkov authored
      In that case at0 was initialized as 0 and still considered uninitialized
      by flushEventq0:
      
          (neo) (z-dev) (g.env) kirr@deco:~/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo$ go test -run Empty
          ------
          2020-10-12T07:39:25 INFO ZEO.runzeo (146240) opening storage '1' using FileStorage
          ------
          2020-10-12T07:39:25 INFO ZEO.StorageServer StorageServer created RW with storages: 1:RW:/tmp/zeo905263273/1.fs
          ------
          2020-10-12T07:39:25 INFO ZEO.asyncio.server listening on /tmp/zeo905263273/1.fs.zeosock
          ------
          2020-10-12T07:39:25 INFO ZEO.asyncio.base Connected server protocol
          ------
          2020-10-12T07:39:25 INFO ZEO.asyncio.server received handshake 'Z5'
          2020/10/12 07:39:25 /tmp/zeo905263273/1.fs.zeosock: EOF
          --- FAIL: TestEmptyDB (0.22s)
              --- FAIL: TestEmptyDB/py/msgpack=false (0.22s)
          panic: flush, but .at0 not yet initialized [recovered]
                  panic: flush, but .at0 not yet initialized
      
          goroutine 7 [running]:
          testing.tRunner.func1.1(0x644a60, 0x6e1a50)
                  /home/kirr/src/tools/go/go/src/testing/testing.go:1072 +0x30d
          testing.tRunner.func1(0xc000001e00)
                  /home/kirr/src/tools/go/go/src/testing/testing.go:1075 +0x41a
          panic(0x644a60, 0x6e1a50)
                  /home/kirr/src/tools/go/go/src/runtime/panic.go:969 +0x175
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.(*zeo).flushEventq0(0xc00018a000)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo.go:180 +0xf3
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.openByURL(0x6e9ca0, 0xc000016108, 0xc000138120, 0xc000153d98, 0x0, 0x0, 0x0, 0x0, 0x0)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo.go:488 +0x5ba
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.zeoOpen(0xc000018740, 0x1e, 0xc000049d98, 0x0, 0x0, 0x0, 0x0)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo_test.go:285 +0x17b
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.withZEO.func1(0xc000001e00, 0x6e9ea0, 0xc00005e6c0)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo_test.go:219 +0xd0
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.withZEOSrv.func2.1(0xc0000185c0, 0x16)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo_test.go:205 +0xfb
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.withZEOSrv.func1(0xc000001e00, 0xc00000e5a0)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo_test.go:185 +0x129
          lab.nexedi.com/kirr/neo/go/zodb/storage/zeo.withZEOSrv.func2(0xc000001e00)
                  /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/storage/zeo/zeo_test.go:197 +0x105
          testing.tRunner(0xc000001e00, 0xc00000e440)
                  /home/kirr/src/tools/go/go/src/testing/testing.go:1123 +0xef
          created by testing.(*T).Run
                  /home/kirr/src/tools/go/go/src/testing/testing.go:1168 +0x2b3
          exit status 2
          FAIL    lab.nexedi.com/kirr/neo/go/zodb/storage/zeo     0.227s
      
      -> Fix it by using dedicated field marking whether .at0 was initialized or not yet.
      1df5acab
  4. 24 Sep, 2020 2 commits
    • Kirill Smelkov's avatar
      neotest: info-local: Fix NIC display for virtio devices · fe6e6107
      Kirill Smelkov authored
      For virtio NICs /sys/class/net/<NIC>/device lead to $pcidev/virtioX, not just $pcidev, e.g.:
      
      	$ realpath /sys/class/net/ens3/device
      	/sys/devices/pci0000:00/0000:00:03.0/virtio0
      
      and we were extracting virtio0 instead of 0000:00:03.0 as PCI device identifier.
      
      -> Fix it by recognizing and stripping /virtioX suffix.
      fe6e6107
    • Kirill Smelkov's avatar
      neotest: info-local: Fix it when CPU frequence/idle information is not available · 3c2b7d3d
      Kirill Smelkov authored
      For example under KVM it was failing as
      
          cpu:	Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz
          cat: /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq: No such file or directory
            File "<string>", line 1
              print '%.2fGHz' % ( / 1E6)
                                  ^
          SyntaxError: invalid syntax
      
          $ lscpu
          Architecture:        x86_64
          CPU op-mode(s):      32-bit, 64-bit
          Byte Order:          Little Endian
          Address sizes:       40 bits physical, 48 bits virtual
          CPU(s):              40
          On-line CPU(s) list: 0-39
          Thread(s) per core:  1
          Core(s) per socket:  1
          Socket(s):           40
          NUMA node(s):        1
          Vendor ID:           GenuineIntel
          CPU family:          6
          Model:               63
          Model name:          Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz
          Stepping:            2
          CPU MHz:             2494.238
          BogoMIPS:            4988.47
          Virtualization:      VT-x
          Hypervisor vendor:   KVM
          Virtualization type: full
          L1d cache:           32K
          L1i cache:           32K
          L2 cache:            4096K
          L3 cache:            16384K
          NUMA node0 CPU(s):   0-39
          Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single pti tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat
      
      -> Fix it by checking whether cpufreq/cpuidle directories are available, and display "?" if they are not.
      3c2b7d3d
  5. 03 Aug, 2020 2 commits
  6. 14 Jul, 2020 21 commits
    • Kirill Smelkov's avatar
      go/zodb/zeo: Make "no serial on load after object deleted" to be a known bug · 049cb9a0
      Kirill Smelkov authored
      This turns zeo tests to pass.
      The bug is reported upstream here: https://github.com/zopefoundation/ZODB/issues/318
      049cb9a0
    • Kirill Smelkov's avatar
      go/zodb/zeo: Cosmetics · d3bb1868
      Kirill Smelkov authored
      d3bb1868
    • Kirill Smelkov's avatar
      go/zodb/zeo: Load: Fix thinko when rejecting result · 149187b4
      Kirill Smelkov authored
      If xres fails to convert to tuple, we should error about xres, not res
      which is always tuple(nil).
      149187b4
    • Kirill Smelkov's avatar
      go/zodb/zeo: Add support for invalidations · d3a0bccb
      Kirill Smelkov authored
      Receive invalidation from server and send corresponding events to watchq.
      Care to send only events with tid > at0 that we initially returned when opening.
      
      Tests pass, but they need https://github.com/zopefoundation/ZEO/pull/160
      d3a0bccb
    • Kirill Smelkov's avatar
      go/zodb/zeo: Teach zlink to serve incoming notification and requests · 2aa27ef9
      Kirill Smelkov authored
      This will be used in the next patch to handle invalidateTransaction
      messages.
      2aa27ef9
    • Kirill Smelkov's avatar
      go/zodb/zeo: MsgPack support · 63d322b9
      Kirill Smelkov authored
      ZEO5 adds way for messages to be encoded via either pickles or MessagePack.
      However until now we were always using pickles.
      Let's add msgpack support to be able to e.g. use wire encoding that
      server prefers.
      
      MsgPack support is almost fully localized in encoding.
      We use tinylib/msgp runtime routines to decode/encode msg fields with known types,
      and shamaton/msgpack to decode/encode msg.arg, which is interface{},
      because msgp does not generally work for arbitrary reflections.
      
      For msgpack=true, tests state is the same as with pickles: handshake
      works, but load fails when verifying that Load returns correct error for
      deleted object:
      
          TestLoad/py/msgpack=false: xtesting.go:272: load 0285cbacc06d3a4c:0000000000000007: returned err unexpected:
              have: /tmp/zeo170183943/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: no such object
              want: /tmp/zeo170183943/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
          TestLoad/py/msgpack=false: xtesting.go:272: load 0285cbad858bf2e6:0000000000000006: returned err unexpected:
              have: /tmp/zeo170183943/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: no such object
              want: /tmp/zeo170183943/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
          TestLoad/py/msgpack=false: xtesting.go:290: load 7fffffffffffffff:0000000000000007: returned err unexpected:
              have: /tmp/zeo170183943/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: no such object
              want: /tmp/zeo170183943/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
          TestLoad/py/msgpack=false: xtesting.go:290: load 7fffffffffffffff:0000000000000006: returned err unexpected:
              have: /tmp/zeo170183943/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: no such object
              want: /tmp/zeo170183943/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
      
          TestLoad/py/msgpack=true: xtesting.go:272: load 0285cbacc06d3a4c:0000000000000007: returned err unexpected:
              have: /tmp/zeo247652538/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: no such object
              want: /tmp/zeo247652538/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
          TestLoad/py/msgpack=true: xtesting.go:272: load 0285cbad858bf2e6:0000000000000006: returned err unexpected:
              have: /tmp/zeo247652538/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: no such object
              want: /tmp/zeo247652538/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
          TestLoad/py/msgpack=true: xtesting.go:290: load 7fffffffffffffff:0000000000000007: returned err unexpected:
              have: /tmp/zeo247652538/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: no such object
              want: /tmp/zeo247652538/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
          TestLoad/py/msgpack=true: xtesting.go:290: load 7fffffffffffffff:0000000000000006: returned err unexpected:
              have: /tmp/zeo247652538/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: no such object
              want: /tmp/zeo247652538/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
      
      This is due to https://github.com/zopefoundation/ZODB/issues/318
      63d322b9
    • Kirill Smelkov's avatar
      go/zodb/zeo: Accept both int|bool for pickled message flags · f7543195
      Kirill Smelkov authored
      It is already documented in pktDecodeZ comment that flags is int|bool.
      However until now we were decoding it only as int.
      
      As is it was working, but it will fail when receiving e.g.
      invalidateTransaction message, because ZEO/py server actually uses bool
      when sending it:
      
          https://github.com/zopefoundation/ZEO/blob/5.2.1-20-gcb26281d/src/ZEO/asyncio/base.py#L139
      
      Fix it.
      This will be covered by watch tests, when watch support will be added in a followup patch.
      f7543195
    • Kirill Smelkov's avatar
      go/zodb/zeo: Factor-out tuple handling into encoding · fe24c62f
      Kirill Smelkov authored
      Handle pickled lists as valid input when decoding tuples.
      fe24c62f
    • Kirill Smelkov's avatar
    • Kirill Smelkov's avatar
      go/zodb/zeo: proto: Use enc.<X> and enc.as<X> to encode/decode type X · ffe0d6e9
      Kirill Smelkov authored
      This is more uniform and will be followed by all data types in the next patch.
      Here rename tid/oid pack/unpack routines correspondingly.
      Add docstrings for X=tid|oid.
      ffe0d6e9
    • Kirill Smelkov's avatar
      go/zodb/zeo: Introduce notion of encoding · 0696cd64
      Kirill Smelkov authored
      Keep information about which message encoding is used on the wire in
      encoding type. Make pktDecode/pktEncode and data type conversion
      utilities be methods of this type. For now there is only 'pickles'
      encoding, but we'll soon introduce 'msgpack'.
      
      Currently not everything related to pickles is localized in encoding -
      we'll be moving more bits to encoding in the followup patches.
      0696cd64
    • Kirill Smelkov's avatar
    • Kirill Smelkov's avatar
      go/zodb/zeo: Start moving things related to protocol and messages encoding into proto.go · 362e555a
      Kirill Smelkov authored
      First step:
      
      - move msg and msgFlags
      - move pktDecode
      - move functions to pack/unpack tid and oid
      
      more to come.
      362e555a
    • Kirill Smelkov's avatar
      go/zodb/zeo: Shutdown zlink on first error · e7ae218b
      Kirill Smelkov authored
      The same behaviour as ZEO/py does.
      e7ae218b
    • Kirill Smelkov's avatar
      go/zodb/zeo: Use zlink as term for link in between peers · b82154d5
      Kirill Smelkov authored
      Just renaming.
      b82154d5
    • Kirill Smelkov's avatar
      go/zodb/zeo: Don't avoid defer · 5a48e702
      Kirill Smelkov authored
      Starting from Go1.14 defer is no longer slow:
      https://golang.org/doc/go1.14#runtime
      5a48e702
    • Kirill Smelkov's avatar
      8889743e
    • Kirill Smelkov's avatar
      go/zodb/zeo: Initial tests · 589faf07
      Kirill Smelkov authored
      As promised in b65f6d0f (go/zodb: Teach ZODB/go to access ZEO (draft))
      let's start to add tests for ZEO/go client.
      
      The client is tested against ZEO/py server.
      Cover handshake and Load.
      
      Load currently fails beause in ZODB/py POSKeyError does not allow to
      distinguish whether it is no object at all or object exists and its data
      was not found for tid_before.
      
          --- FAIL: TestLoad/py (0.22s)
              zeo_test.go:217: load 0285cbacc06d3a4c:0000000000000007: returned err unexpected:
                  have: /tmp/zeo273044293/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: no such object
                  want: /tmp/zeo273044293/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
              zeo_test.go:217: load 0285cbad858bf2e6:0000000000000006: returned err unexpected:
                  have: /tmp/zeo273044293/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: no such object
                  want: /tmp/zeo273044293/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
              zeo_test.go:217: load 7fffffffffffffff:0000000000000006: returned err unexpected:
                  have: /tmp/zeo273044293/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: no such object
                  want: /tmp/zeo273044293/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
              zeo_test.go:217: load 7fffffffffffffff:0000000000000007: returned err unexpected:
                  have: /tmp/zeo273044293/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: no such object
                  want: /tmp/zeo273044293/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
      
      Problem reported upstream:
      
      -> https://github.com/zopefoundation/ZODB/issues/318
      589faf07
    • Kirill Smelkov's avatar
      go/zodb/zeo: Fix thinko in openByURL error context · 24c9f49f
      Kirill Smelkov authored
      No need to use trailing : suffix as xerr.Contextf automatically adds one.
      24c9f49f
    • Kirill Smelkov's avatar
      go/internal/xtesting: LoadDBHistory · e7a65f87
      Kirill Smelkov authored
      This is utility to load whole content of a ZODB database.
      
      It will be useful to load data to expect from e.g. dataok.fs and feed it
      as txnvOk to DrvTestLoad when verifying another storage driver.
      e7a65f87
    • Kirill Smelkov's avatar
      go/internal/xtesting: FatalIf · 41240d2e
      Kirill Smelkov authored
      This is utility to create X function, similar to exc.Raisif, but that
      would call t.Fatal instead.
      41240d2e
  7. 10 Jul, 2020 3 commits
    • Kirill Smelkov's avatar
      go/zodb/fs1: tests: Factor-out infrastructure to verify Watch into common place · 13c77191
      Kirill Smelkov authored
      We will soon need this infrastructure to test other storage drivers.
      13c77191
    • Kirill Smelkov's avatar
      go/internal/xtesting: DrvTestLoad: More easier to read error messages · 88d0165f
      Kirill Smelkov authored
      E.g. before:
      
          --- FAIL: TestLoad/py (0.22s)
              zeo_test.go:217: load 0285cbacc06d3a4c:0000000000000007: returned err unexpected: /tmp/zeo484021674/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: no such object  ; want: /tmp/zeo484021674/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
              zeo_test.go:217: load 0285cbad858bf2e6:0000000000000006: returned err unexpected: /tmp/zeo484021674/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: no such object  ; want: /tmp/zeo484021674/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
              zeo_test.go:217: load 7fffffffffffffff:0000000000000006: returned err unexpected: /tmp/zeo484021674/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: no such object  ; want: /tmp/zeo484021674/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
              zeo_test.go:217: load 7fffffffffffffff:0000000000000007: returned err unexpected: /tmp/zeo484021674/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: no such object  ; want: /tmp/zeo484021674/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
      
      After:
      
          --- FAIL: TestLoad/py (0.22s)
              zeo_test.go:217: load 0285cbacc06d3a4c:0000000000000007: returned err unexpected:
                  have: /tmp/zeo087978981/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: no such object
                  want: /tmp/zeo087978981/1.fs.zeosock: load 0285cbacc06d3a4c:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
              zeo_test.go:217: load 0285cbad858bf2e6:0000000000000006: returned err unexpected:
                  have: /tmp/zeo087978981/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: no such object
                  want: /tmp/zeo087978981/1.fs.zeosock: load 0285cbad858bf2e6:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
              zeo_test.go:217: load 7fffffffffffffff:0000000000000007: returned err unexpected:
                  have: /tmp/zeo087978981/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: no such object
                  want: /tmp/zeo087978981/1.fs.zeosock: load 7fffffffffffffff:0000000000000007: 0000000000000007: object was deleted @0285cbacc06d3a4c
              zeo_test.go:217: load 7fffffffffffffff:0000000000000006: returned err unexpected:
                  have: /tmp/zeo087978981/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: no such object
                  want: /tmp/zeo087978981/1.fs.zeosock: load 7fffffffffffffff:0000000000000006: 0000000000000006: object was deleted @0285cbad858bf2e6
      88d0165f
    • Kirill Smelkov's avatar
      go/zodb/fs1: tests: Factor-out infrastructure to verify Load into common place · 9b584e08
      Kirill Smelkov authored
      We will soon need this infrastructure to test other storage drivers.
      9b584e08
  8. 07 Jul, 2020 1 commit
    • Kirill Smelkov's avatar
      go/internal/xtesting: Retarget package · d055c04a
      Kirill Smelkov authored
      This package already provides parts of infrastructure for ZODB testing
      (see e.g. 46636b16 and 7f14e2cb), and will be used as the place for such
      infrastructure.
      
      Maybe in the future we'll rename it to something like ztesting, but
      leaving package name as is for now.
      d055c04a