diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/package-info.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/package-info.java new file mode 100644 index 00000000000..9d7378a0916 --- /dev/null +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/package-info.java @@ -0,0 +1,94 @@ +/* + * 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. + */ +/** + *

Simulated environment for autoscaling.

+ * + *

Goals

+ * + * + *

Simulated SolrCloudManager - {@link org.apache.solr.cloud.autoscaling.sim.SimCloudManager}

+ * This implementation of {@link org.apache.solr.client.solrj.cloud.SolrCloudManager} + * uses the following simulated components: + * + * SimCloudManager also maintains an up-to-date /live_nodes in SimDistribStateManager, provides a SolrClient instance for use in tests, + * and provides several convenience methods for setting up simulated clusters, populating node and replica metrics, collecting + * autoscaling-related event history, collecting autoscaling event statistics, etc. + * + * SimCloudManager runs actual {@link org.apache.solr.cloud.autoscaling.OverseerTriggerThread} so that it + * uses real trigger and trigger action implementations, as well as real event scheduling and processing code. + * It also provides methods for simulating Overseer leader change. + * + * An important part of the SimCloudManager is also a request handler that processes common autoscaling + * and collection admin requests. Autoscaling requests are processes by an instance of + * {@link org.apache.solr.cloud.autoscaling.AutoScalingHandler} (and result in changes in respective + * data stored in {@link org.apache.solr.cloud.autoscaling.sim.SimDistribStateManager}). Collection + * admin commands are simulated, ie. they don't use actual {@link org.apache.solr.handler.admin.CollectionsHandler} + * due to the complex dependencies on real components. + * + *

{@link org.apache.solr.cloud.autoscaling.sim.SimClusterStateProvider}

+ * This components maintains collection and replica states: + * + * + *

{@link org.apache.solr.cloud.autoscaling.sim.SimNodeStateProvider}

+ * This component maintains node metrics. When a simulated cluster is set up using eg. + * {@link org.apache.solr.cloud.autoscaling.sim.SimCloudManager#createCluster(int, org.apache.solr.common.util.TimeSource)} + * method, each simulated node is initialized with some basic metrics that are expected by the autoscaling + * framework, such as node name, fake system load average, heap usage and disk usage. + * + * The number of cores and disk space metrics may be used in autoscaling calculations, so they are + * tracked and adjusted by {@link org.apache.solr.cloud.autoscaling.sim.SimClusterStateProvider} according + * to the currently active replicas located on each node. + * + *

Limitations of the simulation framework

+ * Currently the simulation framework is limited to testing the core autoscaling API in a single JVM. + * Using it for other purposes would require extensive modifications in Solr and in the framework code. + * + * Specifically, the framework supports testing the following autoscaling components: + * + * Overseer and CollectionsHandler Cmd implementations are NOT used, so cannot be properly tested - some of their functionality is simulated. + * Other SolrCloud components make too many direct references to ZkStateReader, or direct HTTP requests, or rely on too many other components and require much more complex functionality - they may be refactored later but the effort may be too high. + * + * Simulation framework definitely does not support the following functionality: + * + * + */ +package org.apache.solr.cloud.autoscaling.sim; + + diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java index 34f1dbc85d7..47791573888 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java @@ -15,80 +15,7 @@ * limitations under the License. */ /** - *

Simulated environment for autoscaling tests.

- * - *

Goals

- * - * - *

Simulated SolrCloudManager - {@link org.apache.solr.cloud.autoscaling.sim.SimCloudManager}

- * This implementation of {@link org.apache.solr.client.solrj.cloud.SolrCloudManager} - * uses the following simulated components: - * - * SimCloudManager also maintains an up-to-date /live_nodes in SimDistribStateManager, provides a SolrClient instance for use in tests, - * and provides several convenience methods for setting up simulated clusters, populating node and replica metrics, collecting - * autoscaling-related event history, collecting autoscaling event statistics, etc. - * - * SimCloudManager runs actual {@link org.apache.solr.cloud.autoscaling.OverseerTriggerThread} so that it - * uses real trigger and trigger action implementations, as well as real event scheduling and processing code. - * It also provides methods for simulating Overseer leader change. - * - * An important part of the SimCloudManager is also a request handler that processes common autoscaling - * and collection admin requests. Autoscaling requests are processes by an instance of - * {@link org.apache.solr.cloud.autoscaling.AutoScalingHandler} (and result in changes in respective - * data stored in {@link org.apache.solr.cloud.autoscaling.sim.SimDistribStateManager}). Collection - * admin commands are simulated, ie. they don't use actual {@link org.apache.solr.handler.admin.CollectionsHandler} - * due to the complex dependencies on real components. - * - *

{@link org.apache.solr.cloud.autoscaling.sim.SimClusterStateProvider}

- * This components maintains collection and replica states: - * - * - *

{@link org.apache.solr.cloud.autoscaling.sim.SimNodeStateProvider}

- * This component maintains node metrics. When a simulated cluster is set up using eg. - * {@link org.apache.solr.cloud.autoscaling.sim.SimCloudManager#createCluster(int, org.apache.solr.common.util.TimeSource)} - * method, each simulated node is initialized with some basic metrics that are expected by the autoscaling - * framework, such as node name, fake system load average, heap usage and disk usage. - * - * The number of cores and disk space metrics may be used in autoscaling calculations, so they are - * tracked and adjusted by {@link org.apache.solr.cloud.autoscaling.sim.SimClusterStateProvider} according - * to the currently active replicas located on each node. - * - *

Limitations of the simulation framework

- * Currently the simulation framework is limited to testing the core autoscaling API in a single JVM. - * Using it for other purposes would require extensive modifications in Solr and in the framework code. - * - * Specifically, the framework supports testing the following autoscaling components: - * - * Overseer and CollectionsHandler Cmd implementations are NOT used, so cannot be properly tested - some of their functionality is simulated. - * Other SolrCloud components make too many direct references to ZkStateReader, or direct HTTP requests, or rely on too many other components and require much more complex functionality - they may be refactored later but the effort may be too high. - * - * Simulation framework definitely does not support the following functionality: - * - * - *

Testing framework

+ *

Simulated autoscaling tests.

* A base class {@link org.apache.solr.cloud.autoscaling.sim.SimSolrCloudTestCase} is provided, which * provides similar helper methods to the ones in the {@link org.apache.solr.cloud.SolrCloudTestCase}. *