Skip to main content

stream_writer_test.go

stream_writer_test.go - Overview

This file contains tests for the StreamWriter functionality in BadgerDB. It validates the correct operation of StreamWriter in various scenarios, including data insertion, deletion, updates, and interactions with different database modes (Normal, Managed, and InMemory). It also checks for edge cases like equal keys, large values, encryption, and incremental writes.

Detailed Documentation

getSortedKVList

  • Purpose: Creates a sorted list of key-value pairs in a buffer.
  • Parameters:
    • valueSize (int): The size of the value byte array.
    • listSize (int): The number of key-value pairs to generate.
  • Returns:
    • *z.Buffer: A buffer containing the sorted key-value pairs.

TestStreamWriter1

  • Purpose: Tests basic StreamWriter functionality by writing entries and verifying that they can be read back.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriter2

  • Purpose: Tests StreamWriter by writing entries, deleting them, and verifying that they are no longer present.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriter3

  • Purpose: Tests StreamWriter by inserting even keys using StreamWriter, odd keys using Txn, and verifies the sorted order.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriter4

  • Purpose: Tests that StreamWriter reinitializes the Oracle and updates its nextTs.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriter5

  • Purpose: Tests StreamWriter with specific key prefixes to ensure correct behavior across restarts.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriter6

  • Purpose: Tests StreamWriter inserting duplicate keys, checking if they are being added to the same table.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriterCancel

  • Purpose: Tests StreamWriter when Cancel() is called instead of Flush().
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamDone

  • Purpose: Tests the StreamDone functionality to ensure proper stream completion.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestSendOnClosedStream

  • Purpose: Tests that sending data to a closed stream panics, as expected.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestSendOnClosedStream2

  • Purpose: Tests that sending data to a closed stream panics, as expected, when stream done is in between.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriterEncrypted

  • Purpose: Tests StreamWriter functionality with encryption enabled.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriterWithLargeValue

  • Purpose: Tests StreamWriter with large values in managed mode to prevent crashes.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

TestStreamWriterIncremental

  • Purpose: Tests the incremental StreamWriter functionality.
  • Parameters:
    • t (*testing.T): Testing object.
  • Returns:
    • None

Getting Started Relevance