MCPcopy Create free account
hub / github.com/apache/impala / ValidateDict

Function ValidateDict

be/src/util/dict-test.cc:52–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50
51template<typename InternalType, parquet::Type::type PARQUET_TYPE>
52void ValidateDict(const vector<InternalType>& values,
53 const vector<InternalType>& dict_values, int fixed_buffer_byte_size,
54 int skip_at = 0, int skip_count = 0, bool skip_success = true) {
55 set<InternalType> values_set(values.begin(), values.end());
56
57 int bytes_alloc = 0;
58 MemTracker track_encoder;
59 MemTracker tracker;
60 MemPool pool(&tracker);
61 DictEncoder<InternalType> encoder(&pool, fixed_buffer_byte_size, &track_encoder);
62 encoder.UsedbyTest();
63 for (const InternalType& i: values) encoder.Put(i);
64 bytes_alloc = encoder.DictByteSize();
65 EXPECT_EQ(track_encoder.consumption(), bytes_alloc);
66 EXPECT_EQ(encoder.num_entries(), values_set.size());
67
68 uint8_t dict_buffer[encoder.dict_encoded_size()];
69 encoder.WriteDict(dict_buffer);
70
71 int data_buffer_len = encoder.EstimatedDataEncodedSize() * 2;
72 uint8_t data_buffer[data_buffer_len];
73 int data_len = encoder.WriteData(data_buffer, data_buffer_len);
74 EXPECT_GT(data_len, 0);
75 encoder.ClearIndices();
76
77 MemTracker decode_tracker;
78 DictDecoder<InternalType> decoder(&decode_tracker);
79 ASSERT_TRUE(decoder.template Reset<PARQUET_TYPE>(dict_buffer,
80 encoder.dict_encoded_size(),fixed_buffer_byte_size));
81 bytes_alloc = decoder.DictByteSize();
82 EXPECT_EQ(decode_tracker.consumption(), bytes_alloc);
83
84 // Test direct access to the dictionary via indexes
85 for (int i = 0; i < dict_values.size(); ++i) {
86 InternalType expected_value = dict_values[i];
87 InternalType out_value;
88
89 decoder.GetValue(i, &out_value);
90 EXPECT_EQ(expected_value, out_value);
91 }
92 // Test access to dictionary via internal stream
93 ASSERT_OK(decoder.SetData(data_buffer, data_len));
94 ValidateValues(decoder, values, skip_at, skip_count, skip_success);
95 pool.FreeAll();
96}
97
98TEST(DictTest, TestStrings) {
99 StringValue sv1("hello world");

Callers

nothing calls this directly

Calls 15

ValidateValuesFunction · 0.85
UsedbyTestMethod · 0.80
dict_encoded_sizeMethod · 0.80
WriteDictMethod · 0.80
ClearIndicesMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
PutMethod · 0.45
DictByteSizeMethod · 0.45
consumptionMethod · 0.45
num_entriesMethod · 0.45

Tested by

no test coverage detected