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