| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| */ | |
| #include <glog/logging.h> | |
| #include "chain/storage/memory_db.h" | |
| #include "executor/kv/kv_executor.h" | |
| #include "platform/config/resdb_config_utils.h" | |
| #include "platform/consensus/ordering/pbft/consensus_manager_pbft.h" | |
| #include "platform/networkstrate/service_network.h" | |
| #include "platform/statistic/stats.h" | |
| #include "proto/kv/kv.pb.h" | |
| using namespace resdb; | |
| using namespace resdb::storage; | |
| void ShowUsage() { | |
| printf("<config> <private_key> <cert_file> [logging_dir]\n"); | |
| } | |
| std::string GetRandomKey() { | |
| int num1 = rand() % 10; | |
| int num2 = rand() % 10; | |
| return std::to_string(num1) + std::to_string(num2); | |
| } | |
| int main(int argc, char** argv) { | |
| if (argc < 3) { | |
| ShowUsage(); | |
| exit(0); | |
| } | |
| // google::InitGoogleLogging(argv[0]); | |
| // FLAGS_minloglevel = google::GLOG_WARNING; | |
| char* config_file = argv[1]; | |
| char* private_key_file = argv[2]; | |
| char* cert_file = argv[3]; | |
| if (argc >= 5) { | |
| auto monitor_port = Stats::GetGlobalStats(5); | |
| monitor_port->SetPrometheus(argv[4]); | |
| } | |
| std::unique_ptr<ResDBConfig> config = | |
| GenerateResDBConfig(config_file, private_key_file, cert_file); | |
| config->RunningPerformance(true); | |
| auto performance_consens = std::make_unique<ConsensusManagerPBFT>( | |
| *config, std::make_unique<KVExecutor>(std::make_unique<MemoryDB>())); | |
| performance_consens->SetupPerformanceDataFunc([]() { | |
| KVRequest request; | |
| request.set_cmd(KVRequest::SET); | |
| request.set_key(GetRandomKey()); | |
| request.set_value("helloworld"); | |
| std::string request_data; | |
| request.SerializeToString(&request_data); | |
| return request_data; | |
| }); | |
| auto server = | |
| std::make_unique<ServiceNetwork>(*config, std::move(performance_consens)); | |
| server->Run(); | |
| } |