1 // Copyright 2019 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #include "google/cloud/storage/benchmarks/benchmark_utils.h"
16 #include "google/cloud/testing_util/assert_ok.h"
17 #include <gmock/gmock.h>
18
19 namespace google {
20 namespace cloud {
21 namespace storage_benchmarks {
22 namespace {
TEST(StorageBenchmarksUtilsTest,ParseSize)23 TEST(StorageBenchmarksUtilsTest, ParseSize) {
24 EXPECT_EQ(500, ParseSize("500"));
25
26 EXPECT_EQ(1 * kKB, ParseSize("1KB"));
27 EXPECT_EQ(2 * kMB, ParseSize("2MB"));
28 EXPECT_EQ(3 * kGB, ParseSize("3GB"));
29 EXPECT_EQ(4 * kTB, ParseSize("4TB"));
30
31 EXPECT_EQ(5 * kTiB, ParseSize("5TiB"));
32 EXPECT_EQ(6 * kGiB, ParseSize("6GiB"));
33 EXPECT_EQ(7 * kMiB, ParseSize("7MiB"));
34 EXPECT_EQ(8 * kKiB, ParseSize("8KiB"));
35 }
36
TEST(StorageBenchmarksUtilsTest,ParseBufferSize)37 TEST(StorageBenchmarksUtilsTest, ParseBufferSize) {
38 EXPECT_EQ(500, ParseBufferSize("500"));
39
40 EXPECT_EQ(1 * kKB, ParseBufferSize("1KB"));
41 EXPECT_EQ(2 * kMB, ParseBufferSize("2MB"));
42 EXPECT_EQ(3 * kGB, ParseBufferSize("3GB"));
43
44 #if GOOGLE_CLOUD_CPP_HAVE_EXCEPTIONS
45 EXPECT_ANY_THROW(ParseBufferSize("-2"));
46 #endif // GOOGLE_CLOUD_CPP_HAVE_EXCEPTIONS
47 }
48
TEST(StorageBenchmarksUtilsTest,ParseDuration)49 TEST(StorageBenchmarksUtilsTest, ParseDuration) {
50 using s = std::chrono::seconds;
51 using m = std::chrono::minutes;
52 using h = std::chrono::hours;
53 EXPECT_EQ(s(42).count(), ParseDuration("42").count());
54 EXPECT_EQ(s(m(42)).count(), ParseDuration("42m").count());
55 EXPECT_EQ(s(h(3)).count(), ParseDuration("3h").count());
56 EXPECT_EQ(s(1800).count(), ParseDuration("1800s").count());
57 }
58
TEST(StorageBenchmarksUtilsTest,ParseBoolean)59 TEST(StorageBenchmarksUtilsTest, ParseBoolean) {
60 EXPECT_EQ(true, ParseBoolean("").value_or(true));
61 EXPECT_EQ(false, ParseBoolean("").value_or(false));
62
63 EXPECT_EQ(true, ParseBoolean("true").value_or(false));
64 EXPECT_EQ(true, ParseBoolean("True").value_or(false));
65
66 EXPECT_EQ(false, ParseBoolean("false").value_or(true));
67 EXPECT_EQ(false, ParseBoolean("False").value_or(true));
68 }
69
70 } // namespace
71 } // namespace storage_benchmarks
72 } // namespace cloud
73 } // namespace google
74