snappy 0.0.14-java → 0.2.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/main.yml +34 -0
  3. data/.github/workflows/publish.yml +34 -0
  4. data/Gemfile +4 -0
  5. data/README.md +28 -4
  6. data/Rakefile +32 -29
  7. data/ext/api.c +6 -1
  8. data/ext/extconf.rb +21 -24
  9. data/lib/snappy.rb +6 -4
  10. data/lib/snappy/hadoop.rb +22 -0
  11. data/lib/snappy/hadoop/reader.rb +62 -0
  12. data/lib/snappy/hadoop/writer.rb +51 -0
  13. data/lib/snappy/reader.rb +19 -11
  14. data/lib/snappy/shim.rb +30 -0
  15. data/lib/snappy/version.rb +3 -1
  16. data/lib/snappy/writer.rb +8 -9
  17. data/snappy.gemspec +17 -37
  18. data/test/hadoop/snappy_hadoop_reader_test.rb +115 -0
  19. data/test/hadoop/snappy_hadoop_writer_test.rb +48 -0
  20. data/test/snappy_hadoop_test.rb +26 -0
  21. data/test/snappy_reader_test.rb +148 -0
  22. data/test/snappy_test.rb +95 -0
  23. data/test/snappy_writer_test.rb +55 -0
  24. data/test/test_helper.rb +7 -0
  25. data/vendor/snappy/CMakeLists.txt +297 -0
  26. data/vendor/snappy/CONTRIBUTING.md +26 -0
  27. data/vendor/snappy/COPYING +1 -1
  28. data/vendor/snappy/NEWS +60 -0
  29. data/vendor/snappy/{README → README.md} +29 -16
  30. data/vendor/snappy/cmake/SnappyConfig.cmake.in +33 -0
  31. data/vendor/snappy/cmake/config.h.in +62 -0
  32. data/vendor/snappy/docs/README.md +72 -0
  33. data/vendor/snappy/snappy-c.h +3 -3
  34. data/vendor/snappy/snappy-internal.h +113 -32
  35. data/vendor/snappy/snappy-sinksource.cc +33 -0
  36. data/vendor/snappy/snappy-sinksource.h +51 -6
  37. data/vendor/snappy/snappy-stubs-internal.cc +1 -1
  38. data/vendor/snappy/snappy-stubs-internal.h +160 -45
  39. data/vendor/snappy/snappy-stubs-public.h.in +23 -47
  40. data/vendor/snappy/snappy-test.cc +31 -24
  41. data/vendor/snappy/snappy-test.h +46 -103
  42. data/vendor/snappy/snappy.cc +786 -431
  43. data/vendor/snappy/snappy.h +37 -14
  44. data/vendor/snappy/snappy_compress_fuzzer.cc +59 -0
  45. data/vendor/snappy/snappy_uncompress_fuzzer.cc +57 -0
  46. data/vendor/snappy/snappy_unittest.cc +441 -290
  47. metadata +35 -75
  48. data/.travis.yml +0 -4
  49. data/test/test-snappy-reader.rb +0 -129
  50. data/test/test-snappy-writer.rb +0 -55
  51. data/test/test-snappy.rb +0 -58
  52. data/vendor/snappy/ChangeLog +0 -1916
  53. data/vendor/snappy/Makefile.am +0 -23
  54. data/vendor/snappy/autogen.sh +0 -7
  55. data/vendor/snappy/configure.ac +0 -133
  56. data/vendor/snappy/m4/gtest.m4 +0 -74
  57. data/vendor/snappy/testdata/alice29.txt +0 -3609
  58. data/vendor/snappy/testdata/asyoulik.txt +0 -4122
  59. data/vendor/snappy/testdata/baddata1.snappy +0 -0
  60. data/vendor/snappy/testdata/baddata2.snappy +0 -0
  61. data/vendor/snappy/testdata/baddata3.snappy +0 -0
  62. data/vendor/snappy/testdata/fireworks.jpeg +0 -0
  63. data/vendor/snappy/testdata/geo.protodata +0 -0
  64. data/vendor/snappy/testdata/html +0 -1
  65. data/vendor/snappy/testdata/html_x_4 +0 -1
  66. data/vendor/snappy/testdata/kppkn.gtb +0 -0
  67. data/vendor/snappy/testdata/lcet10.txt +0 -7519
  68. data/vendor/snappy/testdata/paper-100k.pdf +2 -600
  69. data/vendor/snappy/testdata/plrabn12.txt +0 -10699
  70. data/vendor/snappy/testdata/urls.10K +0 -10000
@@ -1,5 +1,4 @@
1
1
  // Copyright 2011 Google Inc. All Rights Reserved.
2
- // Author: sesse@google.com (Steinar H. Gunderson)
3
2
  //
4
3
  // Redistribution and use in source and binary forms, with or without
5
4
  // modification, are permitted provided that the following conditions are
@@ -33,66 +32,43 @@
33
32
  // which is a public header. Instead, snappy-stubs-public.h is generated by
34
33
  // from snappy-stubs-public.h.in at configure time.
35
34
 
36
- #ifndef UTIL_SNAPPY_OPENSOURCE_SNAPPY_STUBS_PUBLIC_H_
37
- #define UTIL_SNAPPY_OPENSOURCE_SNAPPY_STUBS_PUBLIC_H_
35
+ #ifndef THIRD_PARTY_SNAPPY_OPENSOURCE_SNAPPY_STUBS_PUBLIC_H_
36
+ #define THIRD_PARTY_SNAPPY_OPENSOURCE_SNAPPY_STUBS_PUBLIC_H_
38
37
 
39
- #if @ac_cv_have_stdint_h@
40
- #include <stdint.h>
41
- #endif
42
-
43
- #if @ac_cv_have_stddef_h@
44
- #include <stddef.h>
45
- #endif
38
+ #include <cstddef>
39
+ #include <cstdint>
40
+ #include <string>
46
41
 
47
- #if @ac_cv_have_sys_uio_h@
42
+ #if ${HAVE_SYS_UIO_H_01} // HAVE_SYS_UIO_H
48
43
  #include <sys/uio.h>
49
- #endif
44
+ #endif // HAVE_SYS_UIO_H
50
45
 
51
- #define SNAPPY_MAJOR @SNAPPY_MAJOR@
52
- #define SNAPPY_MINOR @SNAPPY_MINOR@
53
- #define SNAPPY_PATCHLEVEL @SNAPPY_PATCHLEVEL@
46
+ #define SNAPPY_MAJOR ${PROJECT_VERSION_MAJOR}
47
+ #define SNAPPY_MINOR ${PROJECT_VERSION_MINOR}
48
+ #define SNAPPY_PATCHLEVEL ${PROJECT_VERSION_PATCH}
54
49
  #define SNAPPY_VERSION \
55
50
  ((SNAPPY_MAJOR << 16) | (SNAPPY_MINOR << 8) | SNAPPY_PATCHLEVEL)
56
51
 
57
- #include <string>
58
-
59
52
  namespace snappy {
60
53
 
61
- #if @ac_cv_have_stdint_h@
62
- typedef int8_t int8;
63
- typedef uint8_t uint8;
64
- typedef int16_t int16;
65
- typedef uint16_t uint16;
66
- typedef int32_t int32;
67
- typedef uint32_t uint32;
68
- typedef int64_t int64;
69
- typedef uint64_t uint64;
70
- #else
71
- typedef signed char int8;
72
- typedef unsigned char uint8;
73
- typedef short int16;
74
- typedef unsigned short uint16;
75
- typedef int int32;
76
- typedef unsigned int uint32;
77
- typedef long long int64;
78
- typedef unsigned long long uint64;
79
- #endif
80
-
81
- typedef std::string string;
82
-
83
- #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
84
- TypeName(const TypeName&); \
85
- void operator=(const TypeName&)
54
+ using int8 = std::int8_t;
55
+ using uint8 = std::uint8_t;
56
+ using int16 = std::int16_t;
57
+ using uint16 = std::uint16_t;
58
+ using int32 = std::int32_t;
59
+ using uint32 = std::uint32_t;
60
+ using int64 = std::int64_t;
61
+ using uint64 = std::uint64_t;
86
62
 
87
- #if !@ac_cv_have_sys_uio_h@
63
+ #if !${HAVE_SYS_UIO_H_01} // !HAVE_SYS_UIO_H
88
64
  // Windows does not have an iovec type, yet the concept is universally useful.
89
65
  // It is simple to define it ourselves, so we put it inside our own namespace.
90
66
  struct iovec {
91
- void* iov_base;
92
- size_t iov_len;
67
+ void* iov_base;
68
+ size_t iov_len;
93
69
  };
94
- #endif
70
+ #endif // !HAVE_SYS_UIO_H
95
71
 
96
72
  } // namespace snappy
97
73
 
98
- #endif // UTIL_SNAPPY_OPENSOURCE_SNAPPY_STUBS_PUBLIC_H_
74
+ #endif // THIRD_PARTY_SNAPPY_OPENSOURCE_SNAPPY_STUBS_PUBLIC_H_
@@ -28,13 +28,19 @@
28
28
  //
29
29
  // Various stubs for the unit tests for the open-source version of Snappy.
30
30
 
31
- #include "snappy-test.h"
31
+ #ifdef HAVE_CONFIG_H
32
+ #include "config.h"
33
+ #endif
32
34
 
33
35
  #ifdef HAVE_WINDOWS_H
34
- #define WIN32_LEAN_AND_MEAN
36
+ // Needed to be able to use std::max without workarounds in the source code.
37
+ // https://support.microsoft.com/en-us/help/143208/prb-using-stl-in-windows-program-can-cause-min-max-conflicts
38
+ #define NOMINMAX
35
39
  #include <windows.h>
36
40
  #endif
37
41
 
42
+ #include "snappy-test.h"
43
+
38
44
  #include <algorithm>
39
45
 
40
46
  DEFINE_bool(run_microbenchmarks, true,
@@ -42,12 +48,12 @@ DEFINE_bool(run_microbenchmarks, true,
42
48
 
43
49
  namespace snappy {
44
50
 
45
- string ReadTestDataFile(const string& base, size_t size_limit) {
46
- string contents;
51
+ std::string ReadTestDataFile(const std::string& base, size_t size_limit) {
52
+ std::string contents;
47
53
  const char* srcdir = getenv("srcdir"); // This is set by Automake.
48
- string prefix;
54
+ std::string prefix;
49
55
  if (srcdir) {
50
- prefix = string(srcdir) + "/";
56
+ prefix = std::string(srcdir) + "/";
51
57
  }
52
58
  file::GetContents(prefix + "testdata/" + base, &contents, file::Defaults()
53
59
  ).CheckSuccess();
@@ -57,11 +63,11 @@ string ReadTestDataFile(const string& base, size_t size_limit) {
57
63
  return contents;
58
64
  }
59
65
 
60
- string ReadTestDataFile(const string& base) {
66
+ std::string ReadTestDataFile(const std::string& base) {
61
67
  return ReadTestDataFile(base, 0);
62
68
  }
63
69
 
64
- string StringPrintf(const char* format, ...) {
70
+ std::string StrFormat(const char* format, ...) {
65
71
  char buf[4096];
66
72
  va_list ap;
67
73
  va_start(ap, format);
@@ -73,7 +79,7 @@ string StringPrintf(const char* format, ...) {
73
79
  bool benchmark_running = false;
74
80
  int64 benchmark_real_time_us = 0;
75
81
  int64 benchmark_cpu_time_us = 0;
76
- string *benchmark_label = NULL;
82
+ std::string* benchmark_label = nullptr;
77
83
  int64 benchmark_bytes_processed = 0;
78
84
 
79
85
  void ResetBenchmarkTiming() {
@@ -157,11 +163,11 @@ void StopBenchmarkTiming() {
157
163
  benchmark_running = false;
158
164
  }
159
165
 
160
- void SetBenchmarkLabel(const string& str) {
166
+ void SetBenchmarkLabel(const std::string& str) {
161
167
  if (benchmark_label) {
162
168
  delete benchmark_label;
163
169
  }
164
- benchmark_label = new string(str);
170
+ benchmark_label = new std::string(str);
165
171
  }
166
172
 
167
173
  void SetBenchmarkBytesProcessed(int64 bytes) {
@@ -198,7 +204,7 @@ void Benchmark::Run() {
198
204
  if (benchmark_real_time_us > 0) {
199
205
  num_iterations = 200000 * kCalibrateIterations / benchmark_real_time_us;
200
206
  }
201
- num_iterations = max(num_iterations, kCalibrateIterations);
207
+ num_iterations = std::max(num_iterations, kCalibrateIterations);
202
208
  BenchmarkRun benchmark_runs[kNumRuns];
203
209
 
204
210
  for (int run = 0; run < kNumRuns; ++run) {
@@ -211,13 +217,13 @@ void Benchmark::Run() {
211
217
  benchmark_runs[run].cpu_time_us = benchmark_cpu_time_us;
212
218
  }
213
219
 
214
- string heading = StringPrintf("%s/%d", name_.c_str(), test_case_num);
215
- string human_readable_speed;
220
+ std::string heading = StrFormat("%s/%d", name_.c_str(), test_case_num);
221
+ std::string human_readable_speed;
216
222
 
217
- nth_element(benchmark_runs,
218
- benchmark_runs + kMedianPos,
219
- benchmark_runs + kNumRuns,
220
- BenchmarkCompareCPUTime());
223
+ std::nth_element(benchmark_runs,
224
+ benchmark_runs + kMedianPos,
225
+ benchmark_runs + kNumRuns,
226
+ BenchmarkCompareCPUTime());
221
227
  int64 real_time_us = benchmark_runs[kMedianPos].real_time_us;
222
228
  int64 cpu_time_us = benchmark_runs[kMedianPos].cpu_time_us;
223
229
  if (cpu_time_us <= 0) {
@@ -226,15 +232,16 @@ void Benchmark::Run() {
226
232
  int64 bytes_per_second =
227
233
  benchmark_bytes_processed * 1000000 / cpu_time_us;
228
234
  if (bytes_per_second < 1024) {
229
- human_readable_speed = StringPrintf("%dB/s", bytes_per_second);
235
+ human_readable_speed =
236
+ StrFormat("%dB/s", static_cast<int>(bytes_per_second));
230
237
  } else if (bytes_per_second < 1024 * 1024) {
231
- human_readable_speed = StringPrintf(
238
+ human_readable_speed = StrFormat(
232
239
  "%.1fkB/s", bytes_per_second / 1024.0f);
233
240
  } else if (bytes_per_second < 1024 * 1024 * 1024) {
234
- human_readable_speed = StringPrintf(
241
+ human_readable_speed = StrFormat(
235
242
  "%.1fMB/s", bytes_per_second / (1024.0f * 1024.0f));
236
243
  } else {
237
- human_readable_speed = StringPrintf(
244
+ human_readable_speed = StrFormat(
238
245
  "%.1fGB/s", bytes_per_second / (1024.0f * 1024.0f * 1024.0f));
239
246
  }
240
247
  }
@@ -520,8 +527,8 @@ int ZLib::UncompressAtMostOrAll(Bytef *dest, uLongf *destLen,
520
527
  LOG(WARNING)
521
528
  << "UncompressChunkOrAll: Received some extra data, bytes total: "
522
529
  << uncomp_stream_.avail_in << " bytes: "
523
- << string(reinterpret_cast<const char *>(uncomp_stream_.next_in),
524
- min(int(uncomp_stream_.avail_in), 20));
530
+ << std::string(reinterpret_cast<const char *>(uncomp_stream_.next_in),
531
+ std::min(int(uncomp_stream_.avail_in), 20));
525
532
  UncompressErrorInit();
526
533
  return Z_DATA_ERROR; // what's the extra data for?
527
534
  } else if (err != Z_OK && err != Z_STREAM_END && err != Z_BUF_ERROR) {
@@ -28,8 +28,8 @@
28
28
  //
29
29
  // Various stubs for the unit tests for the open-source version of Snappy.
30
30
 
31
- #ifndef UTIL_SNAPPY_OPENSOURCE_SNAPPY_TEST_H_
32
- #define UTIL_SNAPPY_OPENSOURCE_SNAPPY_TEST_H_
31
+ #ifndef THIRD_PARTY_SNAPPY_OPENSOURCE_SNAPPY_TEST_H_
32
+ #define THIRD_PARTY_SNAPPY_OPENSOURCE_SNAPPY_TEST_H_
33
33
 
34
34
  #include <iostream>
35
35
  #include <string>
@@ -52,12 +52,9 @@
52
52
  #endif
53
53
 
54
54
  #ifdef HAVE_WINDOWS_H
55
- #define WIN32_LEAN_AND_MEAN
56
55
  #include <windows.h>
57
56
  #endif
58
57
 
59
- #include <string>
60
-
61
58
  #ifdef HAVE_GTEST
62
59
 
63
60
  #include <gtest/gtest.h>
@@ -111,35 +108,18 @@
111
108
  #include "lzo/lzo1x.h"
112
109
  #endif
113
110
 
114
- #ifdef HAVE_LIBLZF
115
- extern "C" {
116
- #include "lzf.h"
117
- }
118
- #endif
119
-
120
- #ifdef HAVE_LIBFASTLZ
121
- #include "fastlz.h"
122
- #endif
123
-
124
- #ifdef HAVE_LIBQUICKLZ
125
- #include "quicklz.h"
126
- #endif
127
-
128
111
  namespace {
129
112
 
130
- namespace File {
131
- void Init() { }
132
- } // namespace File
133
-
134
113
  namespace file {
135
- int Defaults() { }
114
+ int Defaults() { return 0; }
136
115
 
137
116
  class DummyStatus {
138
117
  public:
139
118
  void CheckSuccess() { }
140
119
  };
141
120
 
142
- DummyStatus GetContents(const string& filename, string* data, int unused) {
121
+ DummyStatus GetContents(
122
+ const std::string& filename, std::string* data, int unused) {
143
123
  FILE* fp = fopen(filename.c_str(), "rb");
144
124
  if (fp == NULL) {
145
125
  perror(filename.c_str());
@@ -154,15 +134,16 @@ namespace file {
154
134
  perror("fread");
155
135
  exit(1);
156
136
  }
157
- data->append(string(buf, ret));
137
+ data->append(std::string(buf, ret));
158
138
  }
159
139
 
160
140
  fclose(fp);
141
+
142
+ return DummyStatus();
161
143
  }
162
144
 
163
- DummyStatus SetContents(const string& filename,
164
- const string& str,
165
- int unused) {
145
+ inline DummyStatus SetContents(
146
+ const std::string& filename, const std::string& str, int unused) {
166
147
  FILE* fp = fopen(filename.c_str(), "wb");
167
148
  if (fp == NULL) {
168
149
  perror(filename.c_str());
@@ -176,6 +157,8 @@ namespace file {
176
157
  }
177
158
 
178
159
  fclose(fp);
160
+
161
+ return DummyStatus();
179
162
  }
180
163
  } // namespace file
181
164
 
@@ -184,7 +167,7 @@ namespace file {
184
167
  namespace snappy {
185
168
 
186
169
  #define FLAGS_test_random_seed 301
187
- typedef string TypeParam;
170
+ using TypeParam = std::string;
188
171
 
189
172
  void Test_CorruptedTest_VerifyCorrupted();
190
173
  void Test_Snappy_SimpleTests();
@@ -193,67 +176,18 @@ void Test_Snappy_RandomData();
193
176
  void Test_Snappy_FourByteOffset();
194
177
  void Test_SnappyCorruption_TruncatedVarint();
195
178
  void Test_SnappyCorruption_UnterminatedVarint();
179
+ void Test_SnappyCorruption_OverflowingVarint();
196
180
  void Test_Snappy_ReadPastEndOfBuffer();
197
181
  void Test_Snappy_FindMatchLength();
198
182
  void Test_Snappy_FindMatchLengthRandom();
199
183
 
200
- string ReadTestDataFile(const string& base, size_t size_limit);
184
+ std::string ReadTestDataFile(const std::string& base, size_t size_limit);
201
185
 
202
- string ReadTestDataFile(const string& base);
186
+ std::string ReadTestDataFile(const std::string& base);
203
187
 
204
188
  // A sprintf() variant that returns a std::string.
205
189
  // Not safe for general use due to truncation issues.
206
- string StringPrintf(const char* format, ...);
207
-
208
- // A simple, non-cryptographically-secure random generator.
209
- class ACMRandom {
210
- public:
211
- explicit ACMRandom(uint32 seed) : seed_(seed) {}
212
-
213
- int32 Next();
214
-
215
- int32 Uniform(int32 n) {
216
- return Next() % n;
217
- }
218
- uint8 Rand8() {
219
- return static_cast<uint8>((Next() >> 1) & 0x000000ff);
220
- }
221
- bool OneIn(int X) { return Uniform(X) == 0; }
222
-
223
- // Skewed: pick "base" uniformly from range [0,max_log] and then
224
- // return "base" random bits. The effect is to pick a number in the
225
- // range [0,2^max_log-1] with bias towards smaller numbers.
226
- int32 Skewed(int max_log);
227
-
228
- private:
229
- static const uint32 M = 2147483647L; // 2^31-1
230
- uint32 seed_;
231
- };
232
-
233
- inline int32 ACMRandom::Next() {
234
- static const uint64 A = 16807; // bits 14, 8, 7, 5, 2, 1, 0
235
- // We are computing
236
- // seed_ = (seed_ * A) % M, where M = 2^31-1
237
- //
238
- // seed_ must not be zero or M, or else all subsequent computed values
239
- // will be zero or M respectively. For all other values, seed_ will end
240
- // up cycling through every number in [1,M-1]
241
- uint64 product = seed_ * A;
242
-
243
- // Compute (product % M) using the fact that ((x << 31) % M) == x.
244
- seed_ = (product >> 31) + (product & M);
245
- // The first reduction may overflow by 1 bit, so we may need to repeat.
246
- // mod == M is not possible; using > allows the faster sign-bit-based test.
247
- if (seed_ > M) {
248
- seed_ -= M;
249
- }
250
- return seed_;
251
- }
252
-
253
- inline int32 ACMRandom::Skewed(int max_log) {
254
- const int32 base = (Next() - 1) % (max_log+1);
255
- return (Next() - 1) & ((1u << base)-1);
256
- }
190
+ std::string StrFormat(const char* format, ...);
257
191
 
258
192
  // A wall-time clock. This stub is not super-accurate, nor resistant to the
259
193
  // system time changing.
@@ -307,8 +241,8 @@ typedef void (*BenchmarkFunction)(int, int);
307
241
 
308
242
  class Benchmark {
309
243
  public:
310
- Benchmark(const string& name, BenchmarkFunction function) :
311
- name_(name), function_(function) {}
244
+ Benchmark(const std::string& name, BenchmarkFunction function)
245
+ : name_(name), function_(function) {}
312
246
 
313
247
  Benchmark* DenseRange(int start, int stop) {
314
248
  start_ = start;
@@ -319,7 +253,7 @@ class Benchmark {
319
253
  void Run();
320
254
 
321
255
  private:
322
- const string name_;
256
+ const std::string name_;
323
257
  const BenchmarkFunction function_;
324
258
  int start_, stop_;
325
259
  };
@@ -331,11 +265,13 @@ extern Benchmark* Benchmark_BM_UFlat;
331
265
  extern Benchmark* Benchmark_BM_UIOVec;
332
266
  extern Benchmark* Benchmark_BM_UValidate;
333
267
  extern Benchmark* Benchmark_BM_ZFlat;
268
+ extern Benchmark* Benchmark_BM_ZFlatAll;
269
+ extern Benchmark* Benchmark_BM_ZFlatIncreasingTableSize;
334
270
 
335
271
  void ResetBenchmarkTiming();
336
272
  void StartBenchmarkTiming();
337
273
  void StopBenchmarkTiming();
338
- void SetBenchmarkLabel(const string& str);
274
+ void SetBenchmarkLabel(const std::string& str);
339
275
  void SetBenchmarkBytesProcessed(int64 bytes);
340
276
 
341
277
  #ifdef HAVE_LIBZ
@@ -463,7 +399,7 @@ class ZLib {
463
399
 
464
400
  DECLARE_bool(run_microbenchmarks);
465
401
 
466
- static void RunSpecifiedBenchmarks() {
402
+ static inline void RunSpecifiedBenchmarks() {
467
403
  if (!FLAGS_run_microbenchmarks) {
468
404
  return;
469
405
  }
@@ -482,6 +418,8 @@ static void RunSpecifiedBenchmarks() {
482
418
  snappy::Benchmark_BM_UIOVec->Run();
483
419
  snappy::Benchmark_BM_UValidate->Run();
484
420
  snappy::Benchmark_BM_ZFlat->Run();
421
+ snappy::Benchmark_BM_ZFlatAll->Run();
422
+ snappy::Benchmark_BM_ZFlatIncreasingTableSize->Run();
485
423
 
486
424
  fprintf(stderr, "\n");
487
425
  }
@@ -497,6 +435,7 @@ static inline int RUN_ALL_TESTS() {
497
435
  snappy::Test_Snappy_FourByteOffset();
498
436
  snappy::Test_SnappyCorruption_TruncatedVarint();
499
437
  snappy::Test_SnappyCorruption_UnterminatedVarint();
438
+ snappy::Test_SnappyCorruption_OverflowingVarint();
500
439
  snappy::Test_Snappy_ReadPastEndOfBuffer();
501
440
  snappy::Test_Snappy_FindMatchLength();
502
441
  snappy::Test_Snappy_FindMatchLengthRandom();
@@ -510,10 +449,6 @@ static inline int RUN_ALL_TESTS() {
510
449
  // For main().
511
450
  namespace snappy {
512
451
 
513
- static void CompressFile(const char* fname);
514
- static void UncompressFile(const char* fname);
515
- static void MeasureFile(const char* fname);
516
-
517
452
  // Logging.
518
453
 
519
454
  #define LOG(level) LogMessage()
@@ -524,15 +459,15 @@ class LogMessage {
524
459
  public:
525
460
  LogMessage() { }
526
461
  ~LogMessage() {
527
- cerr << endl;
462
+ std::cerr << std::endl;
528
463
  }
529
464
 
530
465
  LogMessage& operator<<(const std::string& msg) {
531
- cerr << msg;
466
+ std::cerr << msg;
532
467
  return *this;
533
468
  }
534
469
  LogMessage& operator<<(int x) {
535
- cerr << x;
470
+ std::cerr << x;
536
471
  return *this;
537
472
  }
538
473
  };
@@ -541,18 +476,29 @@ class LogMessage {
541
476
  // and ones that are always active.
542
477
 
543
478
  #define CRASH_UNLESS(condition) \
544
- PREDICT_TRUE(condition) ? (void)0 : \
479
+ SNAPPY_PREDICT_TRUE(condition) ? (void)0 : \
545
480
  snappy::LogMessageVoidify() & snappy::LogMessageCrash()
546
481
 
482
+ #ifdef _MSC_VER
483
+ // ~LogMessageCrash calls abort() and therefore never exits. This is by design
484
+ // so temporarily disable warning C4722.
485
+ #pragma warning(push)
486
+ #pragma warning(disable:4722)
487
+ #endif
488
+
547
489
  class LogMessageCrash : public LogMessage {
548
490
  public:
549
491
  LogMessageCrash() { }
550
492
  ~LogMessageCrash() {
551
- cerr << endl;
493
+ std::cerr << std::endl;
552
494
  abort();
553
495
  }
554
496
  };
555
497
 
498
+ #ifdef _MSC_VER
499
+ #pragma warning(pop)
500
+ #endif
501
+
556
502
  // This class is used to explicitly ignore values in the conditional
557
503
  // logging macros. This avoids compiler warnings like "value computed
558
504
  // is not used" and "statement has no effect".
@@ -572,11 +518,8 @@ class LogMessageVoidify {
572
518
  #define CHECK_NE(a, b) CRASH_UNLESS((a) != (b))
573
519
  #define CHECK_LT(a, b) CRASH_UNLESS((a) < (b))
574
520
  #define CHECK_GT(a, b) CRASH_UNLESS((a) > (b))
521
+ #define CHECK_OK(cond) (cond).CheckSuccess()
575
522
 
576
- } // namespace
577
-
578
- using snappy::CompressFile;
579
- using snappy::UncompressFile;
580
- using snappy::MeasureFile;
523
+ } // namespace snappy
581
524
 
582
- #endif // UTIL_SNAPPY_OPENSOURCE_SNAPPY_TEST_H_
525
+ #endif // THIRD_PARTY_SNAPPY_OPENSOURCE_SNAPPY_TEST_H_