You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by sp...@apache.org on 2016/12/11 17:45:38 UTC
[15/51] [abbrv] [partial] incubator-quickstep git commit: remove c++
files
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_execution/tests/WorkerSelectionPolicy_unittest.cpp
----------------------------------------------------------------------
diff --git a/query_execution/tests/WorkerSelectionPolicy_unittest.cpp b/query_execution/tests/WorkerSelectionPolicy_unittest.cpp
deleted file mode 100644
index 68de5e5..0000000
--- a/query_execution/tests/WorkerSelectionPolicy_unittest.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * 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 <cstddef>
-#include <memory>
-#include <random>
-#include <utility>
-#include <vector>
-
-#include "gtest/gtest.h"
-
-#include "query_execution/QueryExecutionTypedefs.hpp"
-#include "query_execution/WorkerDirectory.hpp"
-#include "query_execution/WorkerSelectionPolicy.hpp"
-
-namespace quickstep {
-
-class WorkerSelectionPolicyTest : public ::testing::Test {
- protected:
- WorkerDirectory* getWorkerDirectory() {
- return directory_.get();
- }
-
- const std::size_t getRandomWorkerID() const {
- std::uniform_int_distribution<std::size_t> dist(
- 0, directory_->getNumWorkers() - 1);
- return dist(*mt_);
- }
-
- void SetUp() {
- std::vector<int> numa_nodes;
- std::vector<client_id> client_ids;
-
- numa_nodes.reserve(kNumWorkers);
- client_ids.reserve(kNumWorkers);
-
- std::random_device rd;
- mt_.reset(new std::mt19937_64(rd()));
- for (std::size_t worker_thread_index = 0; worker_thread_index < kNumWorkers; ++worker_thread_index) {
- // NUMA node id = worker_thread_index % 4
- // Client ID = worker_thread_index * 2 + 1
- numa_nodes.push_back(worker_thread_index % 4);
- client_ids.push_back(worker_thread_index * 2 + 1);
- }
- directory_.reset(new WorkerDirectory(kNumWorkers, client_ids, numa_nodes));
- }
-
- private:
- static const std::size_t kNumWorkers = 100;
- std::unique_ptr<std::mt19937_64> mt_;
- std::unique_ptr<WorkerDirectory> directory_;
-};
-
-TEST_F(WorkerSelectionPolicyTest, RoundRobinTest) {
- // Check if the round robin policy selects the next worker correctly.
- const std::size_t kStartWorkerID = getRandomWorkerID();
- RoundRobinWorkerSelectionPolicy rr_policy(*getWorkerDirectory(),
- kStartWorkerID);
-
- const std::size_t kNumIterations =
- (getWorkerDirectory()->getNumWorkers()) * 2;
- std::size_t expected_next_worker_thread_index = kStartWorkerID;
- for (std::size_t iteration = 0; iteration < kNumIterations; ++iteration) {
- EXPECT_EQ(expected_next_worker_thread_index, rr_policy.getNextWorkerID());
- expected_next_worker_thread_index = (expected_next_worker_thread_index + 1) %
- (getWorkerDirectory()->getNumWorkers());
- }
-}
-
-TEST_F(WorkerSelectionPolicyTest, RoundRobinAddWorkerTest) {
- // Add a worker to the worker directory dynamically. Check if this worker
- // gets selected by the Round Robin policy.
- const std::size_t kStartWorkerID = getWorkerDirectory()->getNumWorkers() - 1;
- RoundRobinWorkerSelectionPolicy rr_policy(*getWorkerDirectory(),
- kStartWorkerID);
-
- EXPECT_EQ(kStartWorkerID, rr_policy.getNextWorkerID());
-
- // Add a new worker.
- const std::size_t new_worker_thread_index = getWorkerDirectory()->getNumWorkers();
- getWorkerDirectory()->addWorker(new_worker_thread_index * 2 + 1 /** client_id **/,
- 0 /** NUMA node ID **/);
-
- EXPECT_EQ(new_worker_thread_index, rr_policy.getNextWorkerID());
-}
-
-TEST_F(WorkerSelectionPolicyTest, LoadBalancingTest) {
- // Create a random set of worker load values (i.e. number of queued workorders)
- const std::size_t kMaxLoad = 100;
- std::vector<std::size_t> worker_loads;
- worker_loads.reserve(getWorkerDirectory()->getNumWorkers());
-
- std::random_device rd;
- std::mt19937_64 mt(rd());
- std::uniform_int_distribution<std::size_t> dist(0, kMaxLoad);
-
- for (std::size_t worker_thread_index = 0;
- worker_thread_index < getWorkerDirectory()->getNumWorkers();
- ++worker_thread_index) {
- // For each worker ..
- const std::size_t worker_load = dist(mt);
- // assign a random load.
- worker_loads.push_back(worker_load);
- for (std::size_t workorder_count = 0;
- workorder_count < worker_load;
- ++workorder_count) {
- getWorkerDirectory()->incrementNumQueuedWorkOrders(worker_thread_index);
- }
- }
-
- LoadBalancingWorkerSelectionPolicy lb_policy(*getWorkerDirectory());
- // At this point, all the workers have been assigned a random amount of load.
- // Keep decrementing one workorder from every worker and check if the policy
- // correctly chooses the next worker.
- std::size_t zero_load_counts = 0;
- for (std::size_t worker_load_index = 0;
- zero_load_counts < worker_loads.size();
- worker_load_index = (worker_load_index + 1) % worker_loads.size()) {
- EXPECT_EQ(getWorkerDirectory()->getLeastLoadedWorker().first,
- lb_policy.getNextWorkerID());
- if (worker_loads[worker_load_index] > 0) {
- getWorkerDirectory()->decrementNumQueuedWorkOrders(worker_load_index);
- --worker_loads[worker_load_index];
- } else {
- ++zero_load_counts;
- }
- }
- EXPECT_EQ(getWorkerDirectory()->getLeastLoadedWorker().first,
- lb_policy.getNextWorkerID());
-}
-
-TEST_F(WorkerSelectionPolicyTest, RandomWorkerPolicyTest) {
- // Expect that the randomly chosen worker falls in the limits of worker IDs.
- RandomWorkerSelectionPolicy rand_policy(*getWorkerDirectory());
- const std::size_t kNumIterations = 100;
-
- for (std::size_t iter = 0; iter < kNumIterations; ++iter) {
- const std::size_t chosen_worker_thread_index = rand_policy.getNextWorkerID();
- EXPECT_GE(getWorkerDirectory()->getNumWorkers(), chosen_worker_thread_index);
- }
-
- // Add a new worker and repeat the test above.
- const std::size_t new_worker_thread_index = getWorkerDirectory()->getNumWorkers();
- getWorkerDirectory()->addWorker(new_worker_thread_index * 2 + 1 /** client_id **/,
- 0 /** NUMA node ID **/);
-
- for (std::size_t iter = 0; iter < kNumIterations; ++iter) {
- const std::size_t chosen_worker_thread_index = rand_policy.getNextWorkerID();
- EXPECT_GE(getWorkerDirectory()->getNumWorkers(), chosen_worker_thread_index);
- }
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt
deleted file mode 100644
index 10c52a1..0000000
--- a/query_optimizer/CMakeLists.txt
+++ /dev/null
@@ -1,263 +0,0 @@
-# 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.
-
-if (ENABLE_DISTRIBUTED)
- set(QUICKSTEP_DISTRIBUTED TRUE)
-endif()
-
-configure_file (
- "${CMAKE_CURRENT_SOURCE_DIR}/QueryOptimizerConfig.h.in"
- "${CMAKE_CURRENT_BINARY_DIR}/QueryOptimizerConfig.h"
-)
-
-if (BUILD_SHARED_LIBS)
- set(GFLAGS_LIB_NAME gflags_nothreads-shared)
-else()
- set(GFLAGS_LIB_NAME gflags_nothreads-static)
-endif()
-
-add_subdirectory(cost_model)
-add_subdirectory(expressions)
-add_subdirectory(logical)
-add_subdirectory(physical)
-add_subdirectory(resolver)
-add_subdirectory(rules)
-add_subdirectory(strategy)
-add_subdirectory(tests)
-
-# Declare micro-libs:
-add_library(quickstep_queryoptimizer_ExecutionGenerator ExecutionGenerator.cpp ExecutionGenerator.hpp)
-add_library(quickstep_queryoptimizer_LIPFilterGenerator LIPFilterGenerator.cpp LIPFilterGenerator.hpp)
-add_library(quickstep_queryoptimizer_LogicalGenerator LogicalGenerator.cpp LogicalGenerator.hpp)
-add_library(quickstep_queryoptimizer_LogicalToPhysicalMapper
- ../empty_src.cpp
- LogicalToPhysicalMapper.hpp)
-add_library(quickstep_queryoptimizer_Optimizer Optimizer.cpp Optimizer.hpp)
-add_library(quickstep_queryoptimizer_OptimizerContext OptimizerContext.cpp OptimizerContext.hpp)
-add_library(quickstep_queryoptimizer_OptimizerTree ../empty_src.cpp OptimizerTree.hpp)
-add_library(quickstep_queryoptimizer_PhysicalGenerator PhysicalGenerator.cpp PhysicalGenerator.hpp)
-add_library(quickstep_queryoptimizer_QueryHandle ../empty_src.cpp QueryHandle.hpp)
-add_library(quickstep_queryoptimizer_QueryPlan ../empty_src.cpp QueryPlan.hpp)
-add_library(quickstep_queryoptimizer_QueryProcessor QueryProcessor.cpp QueryProcessor.hpp)
-add_library(quickstep_queryoptimizer_Validator ../empty_src.cpp Validator.hpp)
-
-# Link dependencies:
-target_link_libraries(quickstep_queryoptimizer_ExecutionGenerator
- glog
- quickstep_catalog_CatalogAttribute
- quickstep_catalog_CatalogDatabase
- quickstep_catalog_CatalogRelation
- quickstep_catalog_CatalogRelationSchema
- quickstep_catalog_CatalogTypedefs
- quickstep_expressions_Expressions_proto
- quickstep_expressions_aggregation_AggregateFunction
- quickstep_expressions_aggregation_AggregateFunction_proto
- quickstep_expressions_predicate_Predicate
- quickstep_expressions_scalar_Scalar
- quickstep_expressions_scalar_ScalarAttribute
- quickstep_expressions_windowaggregation_WindowAggregateFunction
- quickstep_expressions_windowaggregation_WindowAggregateFunction_proto
- quickstep_queryexecution_QueryContext
- quickstep_queryexecution_QueryContext_proto
- quickstep_queryoptimizer_LIPFilterGenerator
- quickstep_queryoptimizer_OptimizerContext
- quickstep_queryoptimizer_QueryHandle
- quickstep_queryoptimizer_QueryPlan
- quickstep_queryoptimizer_costmodel_CostModel
- quickstep_queryoptimizer_costmodel_SimpleCostModel
- quickstep_queryoptimizer_costmodel_StarSchemaSimpleCostModel
- quickstep_queryoptimizer_expressions_AggregateFunction
- quickstep_queryoptimizer_expressions_Alias
- quickstep_queryoptimizer_expressions_AttributeReference
- quickstep_queryoptimizer_expressions_ComparisonExpression
- quickstep_queryoptimizer_expressions_ExprId
- quickstep_queryoptimizer_expressions_ExpressionType
- quickstep_queryoptimizer_expressions_NamedExpression
- quickstep_queryoptimizer_expressions_PatternMatcher
- quickstep_queryoptimizer_expressions_Predicate
- quickstep_queryoptimizer_expressions_Scalar
- quickstep_queryoptimizer_expressions_ScalarLiteral
- quickstep_queryoptimizer_expressions_WindowAggregateFunction
- quickstep_queryoptimizer_physical_Aggregate
- quickstep_queryoptimizer_physical_CopyFrom
- quickstep_queryoptimizer_physical_CreateIndex
- quickstep_queryoptimizer_physical_CreateTable
- quickstep_queryoptimizer_physical_DeleteTuples
- quickstep_queryoptimizer_physical_DropTable
- quickstep_queryoptimizer_physical_HashJoin
- quickstep_queryoptimizer_physical_InsertSelection
- quickstep_queryoptimizer_physical_InsertTuple
- quickstep_queryoptimizer_physical_LIPFilterConfiguration
- quickstep_queryoptimizer_physical_NestedLoopsJoin
- quickstep_queryoptimizer_physical_PatternMatcher
- quickstep_queryoptimizer_physical_Physical
- quickstep_queryoptimizer_physical_PhysicalType
- quickstep_queryoptimizer_physical_Sample
- quickstep_queryoptimizer_physical_Selection
- quickstep_queryoptimizer_physical_SharedSubplanReference
- quickstep_queryoptimizer_physical_Sort
- quickstep_queryoptimizer_physical_TableGenerator
- quickstep_queryoptimizer_physical_TableReference
- quickstep_queryoptimizer_physical_TopLevelPlan
- quickstep_queryoptimizer_physical_UpdateTable
- quickstep_queryoptimizer_physical_WindowAggregate
- quickstep_relationaloperators_AggregationOperator
- quickstep_relationaloperators_BuildHashOperator
- quickstep_relationaloperators_CreateIndexOperator
- quickstep_relationaloperators_CreateTableOperator
- quickstep_relationaloperators_DeleteOperator
- quickstep_relationaloperators_DestroyAggregationStateOperator
- quickstep_relationaloperators_DestroyHashOperator
- quickstep_relationaloperators_DropTableOperator
- quickstep_relationaloperators_FinalizeAggregationOperator
- quickstep_relationaloperators_HashJoinOperator
- quickstep_relationaloperators_InsertOperator
- quickstep_relationaloperators_NestedLoopsJoinOperator
- quickstep_relationaloperators_RelationalOperator
- quickstep_relationaloperators_SampleOperator
- quickstep_relationaloperators_SaveBlocksOperator
- quickstep_relationaloperators_SelectOperator
- quickstep_relationaloperators_SortMergeRunOperator
- quickstep_relationaloperators_SortRunGenerationOperator
- quickstep_relationaloperators_TableGeneratorOperator
- quickstep_relationaloperators_TextScanOperator
- quickstep_relationaloperators_UpdateOperator
- quickstep_relationaloperators_WindowAggregationOperator
- quickstep_storage_AggregationOperationState_proto
- quickstep_storage_HashTableFactory
- quickstep_storage_HashTable_proto
- quickstep_storage_InsertDestination_proto
- quickstep_storage_StorageBlockLayout
- quickstep_storage_StorageBlockLayout_proto
- quickstep_storage_SubBlockTypeRegistry
- quickstep_types_Type
- quickstep_types_Type_proto
- quickstep_types_TypedValue
- quickstep_types_TypedValue_proto
- quickstep_types_containers_Tuple_proto
- quickstep_utility_Macros
- quickstep_utility_SqlError)
-if (ENABLE_DISTRIBUTED)
- target_link_libraries(quickstep_queryoptimizer_ExecutionGenerator
- quickstep_catalog_Catalog_proto)
-endif()
-target_link_libraries(quickstep_queryoptimizer_LIPFilterGenerator
- glog
- quickstep_catalog_CatalogAttribute
- quickstep_queryexecution_QueryContext
- quickstep_queryexecution_QueryContext_proto
- quickstep_queryoptimizer_QueryPlan
- quickstep_queryoptimizer_expressions_ExprId
- quickstep_queryoptimizer_physical_Aggregate
- quickstep_queryoptimizer_physical_HashJoin
- quickstep_queryoptimizer_physical_LIPFilterConfiguration
- quickstep_queryoptimizer_physical_Physical
- quickstep_queryoptimizer_physical_Selection
- quickstep_relationaloperators_RelationalOperator
- quickstep_types_Type
- quickstep_utility_Macros
- quickstep_utility_lipfilter_LIPFilter
- quickstep_utility_lipfilter_LIPFilter_proto)
-target_link_libraries(quickstep_queryoptimizer_LogicalGenerator
- glog
- quickstep_parser_ParseStatement
- quickstep_queryoptimizer_OptimizerContext
- quickstep_queryoptimizer_logical_Logical
- quickstep_queryoptimizer_resolver_Resolver
- quickstep_queryoptimizer_rules_CollapseProject
- quickstep_queryoptimizer_rules_GenerateJoins
- quickstep_queryoptimizer_rules_PushDownFilter
- quickstep_queryoptimizer_rules_PushDownSemiAntiJoin
- quickstep_queryoptimizer_rules_Rule
- quickstep_queryoptimizer_rules_UnnestSubqueries
- quickstep_queryoptimizer_Validator
- quickstep_utility_Macros)
-target_link_libraries(quickstep_queryoptimizer_LogicalToPhysicalMapper
- quickstep_queryoptimizer_logical_Logical
- quickstep_queryoptimizer_physical_Physical
- quickstep_utility_Macros)
-target_link_libraries(quickstep_queryoptimizer_Optimizer
- quickstep_queryoptimizer_ExecutionGenerator
- quickstep_queryoptimizer_LogicalGenerator
- quickstep_queryoptimizer_PhysicalGenerator
- quickstep_utility_Macros)
-target_link_libraries(quickstep_queryoptimizer_OptimizerContext
- quickstep_queryoptimizer_expressions_ExprId
- quickstep_utility_Macros)
-target_link_libraries(quickstep_queryoptimizer_OptimizerTree
- quickstep_storage_StorageBlockLayout_proto
- quickstep_utility_Macros
- quickstep_utility_TreeStringSerializable)
-target_link_libraries(quickstep_queryoptimizer_PhysicalGenerator
- ${GFLAGS_LIB_NAME}
- quickstep_queryoptimizer_LogicalToPhysicalMapper
- quickstep_queryoptimizer_logical_Logical
- quickstep_queryoptimizer_physical_Physical
- quickstep_queryoptimizer_rules_AttachLIPFilters
- quickstep_queryoptimizer_rules_PruneColumns
- quickstep_queryoptimizer_rules_StarSchemaHashJoinOrderOptimization
- quickstep_queryoptimizer_rules_SwapProbeBuild
- quickstep_queryoptimizer_strategy_Aggregate
- quickstep_queryoptimizer_strategy_Join
- quickstep_queryoptimizer_strategy_OneToOne
- quickstep_queryoptimizer_strategy_Selection
- quickstep_queryoptimizer_strategy_Strategy
- quickstep_queryoptimizer_Validator
- quickstep_utility_Macros
- quickstep_utility_PlanVisualizer)
-target_link_libraries(quickstep_queryoptimizer_QueryHandle
- quickstep_catalog_Catalog_proto
- quickstep_queryexecution_QueryContext_proto
- quickstep_queryoptimizer_QueryPlan
- quickstep_utility_Macros
- tmb)
-target_link_libraries(quickstep_queryoptimizer_QueryPlan
- quickstep_relationaloperators_RelationalOperator
- quickstep_utility_DAG
- quickstep_utility_Macros)
-target_link_libraries(quickstep_queryoptimizer_QueryProcessor
- quickstep_catalog_Catalog
- quickstep_catalog_Catalog_proto
- quickstep_queryoptimizer_Optimizer
- quickstep_queryoptimizer_OptimizerContext
- quickstep_utility_Macros)
-target_link_libraries(quickstep_queryoptimizer_Validator
- glog
- quickstep_queryoptimizer_expressions_AttributeReference
- quickstep_queryoptimizer_expressions_ExpressionUtil)
-
-# Module all-in-one library:
-add_library(quickstep_queryoptimizer ../empty_src.cpp QueryOptimizerModule.hpp)
-target_link_libraries(quickstep_queryoptimizer
- quickstep_queryoptimizer_ExecutionGenerator
- quickstep_queryoptimizer_LIPFilterGenerator
- quickstep_queryoptimizer_LogicalGenerator
- quickstep_queryoptimizer_LogicalToPhysicalMapper
- quickstep_queryoptimizer_Optimizer
- quickstep_queryoptimizer_OptimizerContext
- quickstep_queryoptimizer_OptimizerTree
- quickstep_queryoptimizer_PhysicalGenerator
- quickstep_queryoptimizer_QueryHandle
- quickstep_queryoptimizer_QueryPlan
- quickstep_queryoptimizer_QueryProcessor
- quickstep_queryoptimizer_Validator
- quickstep_queryoptimizer_costmodel
- quickstep_queryoptimizer_expressions
- quickstep_queryoptimizer_logical
- quickstep_queryoptimizer_physical
- quickstep_queryoptimizer_resolver
- quickstep_queryoptimizer_rules)