/* * 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. */ package org.apache.solr.client.solrj; import static org.apache.solr.common.params.CoreAdminParams.*; import java.util.Iterator; import java.util.Set; import org.apache.lucene.util.LuceneTestCase; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.common.params.ShardParams; import org.apache.solr.common.params.SolrParams; import com.google.common.collect.Sets; /** * Tests that default {@link CollectionAdminRequest#getParams()} returns only * the required parameters of this request, and none other. */ public class CollectionAdminRequestRequiredParamsTest extends LuceneTestCase { public void testBalanceShardUnique() { final CollectionAdminRequest.BalanceShardUnique request = new CollectionAdminRequest.BalanceShardUnique() .setCollection("foo") .setPropertyName("prop"); assertContainsParams(request.getParams(), ACTION, COLLECTION, "property"); } public void testClusterProp() { final CollectionAdminRequest.ClusterProp request = new CollectionAdminRequest.ClusterProp() .setPropertyName("foo") .setPropertyValue("bar"); assertContainsParams(request.getParams(), ACTION, NAME, "val"); } public void testAddRole() { final CollectionAdminRequest.AddRole request = new CollectionAdminRequest.AddRole() .setNode("node") .setRole("role"); assertContainsParams(request.getParams(), ACTION, "node", "role"); } public void testRemoveRole() { final CollectionAdminRequest.RemoveRole request = new CollectionAdminRequest.RemoveRole() .setNode("node") .setRole("role"); assertContainsParams(request.getParams(), ACTION, "node", "role"); } public void testAddReplica() { // with shard parameter CollectionAdminRequest.AddReplica request = new CollectionAdminRequest.AddReplica() .setShardName("shard") .setCollectionName("collection"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD); // with route parameter request = new CollectionAdminRequest.AddReplica() .setRouteKey("route") .setCollectionName("collection"); assertContainsParams(request.getParams(), ACTION, COLLECTION, ShardParams._ROUTE_); } public void testAddReplicaProp() { final CollectionAdminRequest.AddReplicaProp request = new CollectionAdminRequest.AddReplicaProp() .setShardName("shard") .setCollectionName("collection") .setReplica("replica") .setPropertyName("prop") .setPropertyValue("value"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD, REPLICA, "property", "property.value"); } public void testClusterStatus() { final CollectionAdminRequest.ClusterStatus request = new CollectionAdminRequest.ClusterStatus(); assertContainsParams(request.getParams(), ACTION); } public void testCreateShard() { final CollectionAdminRequest.CreateShard request = new CollectionAdminRequest.CreateShard() .setCollectionName("collection") .setShardName("shard"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD); } public void testDeleteReplica() { final CollectionAdminRequest.DeleteReplica request = new CollectionAdminRequest.DeleteReplica() .setCollectionName("collection") .setShardName("shard") .setReplica("replica"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD, REPLICA); } public void testDeleteReplicaProp() { final CollectionAdminRequest.DeleteReplicaProp request = new CollectionAdminRequest.DeleteReplicaProp() .setCollectionName("collection") .setShardName("shard") .setReplica("replica") .setPropertyName("foo"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD, REPLICA, "property"); } public void testDeleteShard() { final CollectionAdminRequest.DeleteShard request = new CollectionAdminRequest.DeleteShard() .setCollectionName("collection") .setShardName("shard"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD); } public void testSplitShard() { final CollectionAdminRequest.SplitShard request = new CollectionAdminRequest.SplitShard() .setCollectionName("collection") .setShardName("shard"); assertContainsParams(request.getParams(), ACTION, COLLECTION, SHARD); } public void testCreateCollection() { final CollectionAdminRequest.Create request = new CollectionAdminRequest.Create() .setCollectionName("collection"); assertContainsParams(request.getParams(), ACTION, NAME); } public void testReloadCollection() { final CollectionAdminRequest.Reload request = new CollectionAdminRequest.Reload() .setCollectionName("collection"); assertContainsParams(request.getParams(), ACTION, NAME); } public void testDeleteCollection() { final CollectionAdminRequest.Delete request = new CollectionAdminRequest.Delete() .setCollectionName("collection"); assertContainsParams(request.getParams(), ACTION, NAME); } public void testCreateAlias() { final CollectionAdminRequest.CreateAlias request = new CollectionAdminRequest.CreateAlias() .setAliasName("name") .setAliasedCollections("collections"); assertContainsParams(request.getParams(), ACTION, NAME, "collections"); } public void testDeleteAlias() { final CollectionAdminRequest.DeleteAlias request = new CollectionAdminRequest.DeleteAlias() .setAliasName("name"); assertContainsParams(request.getParams(), ACTION, NAME); } public void testListCollections() { final CollectionAdminRequest.List request = new CollectionAdminRequest.List(); assertContainsParams(request.getParams(), ACTION); } public void testMigrate() { final CollectionAdminRequest.Migrate request = new CollectionAdminRequest.Migrate() .setCollectionName("collection") .setTargetCollection("target") .setSplitKey("splitKey"); assertContainsParams(request.getParams(), ACTION, COLLECTION, "target.collection", "split.key"); } public void testOverseerStatus() { final CollectionAdminRequest.OverseerStatus request = new CollectionAdminRequest.OverseerStatus(); assertContainsParams(request.getParams(), ACTION); } public void testRequestStatus() { final CollectionAdminRequest.RequestStatus request = new CollectionAdminRequest.RequestStatus() .setRequestId("request"); assertContainsParams(request.getParams(), ACTION, REQUESTID); } private void assertContainsParams(SolrParams solrParams, String... requiredParams) { final Set<String> requiredParamsSet = Sets.newHashSet(requiredParams); final Set<String> solrParamsSet = Sets.newHashSet(); for (Iterator<String> iter = solrParams.getParameterNamesIterator(); iter.hasNext();) { solrParamsSet.add(iter.next()); } assertTrue("required params missing: required=" + requiredParamsSet + ", params=" + solrParamsSet, solrParamsSet.containsAll(requiredParamsSet)); assertTrue("extra parameters included in request: required=" + requiredParamsSet + ", params=" + solrParams, Sets.difference(solrParamsSet, requiredParamsSet).isEmpty()); } }