diff options
Diffstat (limited to 'benchmarks/generate_datasets.cc')
-rw-r--r-- | benchmarks/generate_datasets.cc | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/benchmarks/generate_datasets.cc b/benchmarks/generate_datasets.cc deleted file mode 100644 index 61e7adf1..00000000 --- a/benchmarks/generate_datasets.cc +++ /dev/null @@ -1,117 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include <fstream> -#include <iostream> -#include "benchmarks.pb.h" - -using benchmarks::BenchmarkDataset; -using google::protobuf::Descriptor; -using google::protobuf::DescriptorPool; -using google::protobuf::Message; -using google::protobuf::MessageFactory; - -std::set<std::string> names; - -const char *file_prefix = "dataset."; -const char *file_suffix = ".pb"; - -void WriteFileWithPayloads(const std::string& name, - const std::string& message_name, - const std::vector<std::string>& payload) { - if (!names.insert(name).second) { - std::cerr << "Duplicate test name: " << name << "\n"; - abort(); - } - - // First verify that this message name exists in our set of benchmark messages - // and that these payloads are valid for the given message. - const Descriptor* d = - DescriptorPool::generated_pool()->FindMessageTypeByName(message_name); - - if (!d) { - std::cerr << "For dataset " << name << ", no such message: " - << message_name << "\n"; - abort(); - } - - Message* m = MessageFactory::generated_factory()->GetPrototype(d)->New(); - - for (size_t i = 0; i < payload.size(); i++) { - if (!m->ParseFromString(payload[i])) { - std::cerr << "For dataset " << name << ", payload[" << i << "] fails " - << "to parse\n"; - abort(); - } - } - - BenchmarkDataset dataset; - dataset.set_name(name); - dataset.set_message_name(message_name); - for (size_t i = 0; i < payload.size(); i++) { - dataset.add_payload()->assign(payload[i]); - } - - std::ofstream writer; - std::string fname = file_prefix + name + file_suffix; - writer.open(fname.c_str()); - dataset.SerializeToOstream(&writer); - writer.close(); - - std::cerr << "Wrote dataset: " << fname << "\n"; -} - -void WriteFile(const std::string& name, const std::string& message_name, - const std::string& payload) { - std::vector<std::string> payloads; - payloads.push_back(payload); - WriteFileWithPayloads(name, message_name, payloads); -} - -std::string ReadFile(const std::string& name) { - std::ifstream file(name.c_str()); - GOOGLE_CHECK(file.is_open()) << "Couldn't find file '" << name << - "', please make sure you are running " - "this command from the benchmarks/ " - "directory.\n"; - return std::string((std::istreambuf_iterator<char>(file)), - std::istreambuf_iterator<char>()); -} - -int main() { - WriteFile("google_message1_proto3", "benchmarks.proto3.GoogleMessage1", - ReadFile("google_message1.dat")); - WriteFile("google_message1_proto2", "benchmarks.proto2.GoogleMessage1", - ReadFile("google_message1.dat")); - - // Not in proto3 because it has a group, which is not supported. - WriteFile("google_message2", "benchmarks.proto2.GoogleMessage2", - ReadFile("google_message2.dat")); -} |