#!/usr/bin/env python3

from contextlib import ExitStack
from hse2 import hse

from utility import lifecycle, cli


hse.init(cli.HOME)

try:
    with ExitStack() as stack:
        kvdb_ctx = lifecycle.KvdbContext()
        kvdb = stack.enter_context(kvdb_ctx)
        kvs_ctx = lifecycle.KvsContext(kvdb, "txn_seek_del_put_next").rparams(
            "transactions_enable=1"
        )
        kvs = stack.enter_context(kvs_ctx)

        with kvdb.transaction() as txn:
            kvs.put(b"a", b"1", txn=txn)
            kvs.put(b"b", b"2", txn=txn)
            kvs.put(b"c", b"3", txn=txn)

        with kvdb.transaction() as txn:
            txcursor = kvs.cursor(txn=txn)
            txcursor.seek(b"a")
            kvs.delete(b"a", txn=txn)

        with kvdb.transaction() as txn:
            kvs.put(b"a", b"11", txn=txn)
Пример #2
0
#!/usr/bin/env python3

from contextlib import ExitStack
from hse2 import hse

from utility import lifecycle, cli

hse.init(cli.HOME)

try:
    with ExitStack() as stack:
        kvdb_ctx = lifecycle.KvdbContext().rparams("dur_enable=0")
        kvdb = stack.enter_context(kvdb_ctx)
        kvs_ctx = lifecycle.KvsContext(kvdb, "sfx_test_c0").cparams(
            "pfx_len=1", "sfx_len=2")
        kvs = stack.enter_context(kvs_ctx)

        kvs.put(b"AbaXX", b"42")
        kvs.put(b"AbcXX", b"42")
        kvs.put(b"AbdXX", b"42")

        cnt, *kv = kvs.prefix_probe(b"Abc")
        assert cnt == hse.KvsPfxProbeCnt.ONE
        assert kv == [b"AbcXX", b"42"]

        kvdb.sync(flags=hse.SyncFlag.ASYNC)
        kvs.put(b"AbcXX", b"43")  # duplicate

        cnt, *kv = kvs.prefix_probe(b"Abc")
        assert cnt == hse.KvsPfxProbeCnt.ONE
        assert kv == [b"AbcXX", b"43"]
Пример #3
0
#!/usr/bin/env python3

# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2021 Micron Technology, Inc. All rights reserved.

from contextlib import ExitStack
from hse2 import hse

from utility import lifecycle, cli

hse.init(cli.CONFIG)

try:
    with ExitStack() as stack:
        kvdb_ctx = lifecycle.KvdbContext().rparams("durability.enabled=false")
        kvdb = stack.enter_context(kvdb_ctx)
        kvs_ctx = lifecycle.KvsContext(
            kvdb, "cn_seqno").rparams("transactions.enabled=true")
        kvs = stack.enter_context(kvs_ctx)

        txn = kvdb.transaction()
        txn.begin()

        with kvdb.transaction() as t:
            kvs.put(b"a", b"1", txn=t)

        kvdb.sync()

        txcursor = kvs.cursor(txn=txn)
        txcursor.read()
Пример #4
0
#!/usr/bin/env python3

from hse2 import hse

from utility import lifecycle, cli

# Verify a case where full scan and pfx scan return equivalent results

keycount = 10 * 1024 * 1024

hse.init(cli.HOME)

try:
    with lifecycle.KvdbContext() as kvdb:
        for pfxlen in range(4):
            with lifecycle.KvsContext(kvdb,
                                      f"compare_full_and_pfx{pfxlen}") as kvs:
                for i in range(keycount):
                    if i % 2 == 0:
                        key = f"XXXX{i}".encode()
                    else:
                        key = f"CCCC{i}".encode()
                    kvs.put(key, None)

                with kvs.cursor() as c1:
                    s1 = sum(1 for _ in c1.items())
                with kvs.cursor(b"CCCC") as c2:
                    s2 = sum(1 for _ in c2.items())

                assert s1 == keycount
                assert s2 == keycount / 2
Пример #5
0
#!/usr/bin/env python3

from hse2 import hse

from utility import lifecycle

hse.init()

try:
    with lifecycle.KvdbContext().rparams("dur_enable=0") as kvdb:
        # Test 1: Update after seek. Seek can be to an existing key or non-existent key
        with lifecycle.KvsContext(kvdb, "pos_stab-1") as kvs:
            kvs.put(b"a", b"1")
            kvs.put(b"b", b"2")
            kvs.put(b"d", b"4")
            kvs.put(b"e", b"5")

            cursor = kvs.cursor()

            # seek to an existing key and update_view.
            cursor.seek(b"b")
            cursor.update_view()
            kv = cursor.read()
            assert kv == (b"b", b"2")

            # seek to a non-existent key and update_view.
            cursor.seek(b"c")
            kvs.put(b"c", b"3")
            cursor.update_view()

            kv = cursor.read()