1 #include "benchmarks.pb.h"
2 #include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h"
3 #include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h"
4 #include "datasets/google_message2/benchmark_message2.pb.h"
5 #include "datasets/google_message3/benchmark_message3.pb.h"
6 #include "datasets/google_message4/benchmark_message4.pb.h"
14 std::ifstream file(
name.c_str());
17 <<
"', please make sure you are running this command from the benchmarks"
19 return std::string((std::istreambuf_iterator<char>(file)),
20 std::istreambuf_iterator<char>());
23 int main(
int argc,
char *argv[]) {
24 if (argc % 2 == 0 || argc == 1) {
25 std::cerr <<
"Usage: [input_files] [output_file_names] where " <<
26 "input_files are one to one mapping to output_file_names." <<
31 for (
int i = argc / 2;
i > 0;
i--) {
35 std::cerr <<
"Generating " << input_file
36 <<
" to " << output_file << std::endl;
37 benchmarks::BenchmarkDataset dataset;
41 <<
"Can' t parse data file " << input_file;
43 if (dataset.message_name() ==
"benchmarks.proto3.GoogleMessage1") {
44 message =
new benchmarks::proto3::GoogleMessage1;
45 }
else if (dataset.message_name() ==
"benchmarks.proto2.GoogleMessage1") {
46 message =
new benchmarks::proto2::GoogleMessage1;
47 }
else if (dataset.message_name() ==
"benchmarks.proto2.GoogleMessage2") {
48 message =
new benchmarks::proto2::GoogleMessage2;
49 }
else if (dataset.message_name() ==
50 "benchmarks.google_message3.GoogleMessage3") {
51 message =
new benchmarks::google_message3::GoogleMessage3;
52 }
else if (dataset.message_name() ==
53 "benchmarks.google_message4.GoogleMessage4") {
54 message =
new benchmarks::google_message4::GoogleMessage4;
56 std::cerr <<
"Unknown message type: " << dataset.message_name();
60 for (
int i = 0;
i < dataset.payload_size();
i++) {
61 message->ParseFromString(dataset.payload(
i));
64 dataset.set_payload(
i,
message->SerializeAsString());
67 std::ofstream ofs(output_file);
68 ofs << dataset.SerializeAsString();