| #!/bin/bash |
| # 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. |
| |
| source bin-test/utils/assert.sh |
| source bin-test/utils/cleanup.sh |
| |
| |
| # All tests should start with solr_test |
| |
| function solr_suite_before() { |
| bin/solr stop -all > /dev/null 2>&1 |
| bin/solr start -c > /dev/null 2>&1 |
| |
| |
| local source_configset_dir="server/solr/configsets/sample_techproducts_configs" |
| TMP_CONFIGSET_DIR="/tmp/test_config" |
| rm -rf $TMP_CONFIGSET_DIR; cp -r $source_configset_dir $TMP_CONFIGSET_DIR |
| } |
| |
| function solr_suite_after() { |
| bin/solr stop -all > /dev/null 2>&1 |
| rm -rf $TMP_CONFIGSET_DIR |
| } |
| |
| function solr_unit_test_before() { |
| delete_all_collections > /dev/null 2>&1 |
| } |
| |
| function solr_unit_test_after() { |
| delete_all_collections > /dev/null 2>&1 |
| } |
| |
| |
| function solr_test_can_create_collection() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME" |
| local expected_output="Created collection 'COLL_NAME'" |
| local actual_output; actual_output=$($create_cmd) |
| |
| assert_cmd_succeeded "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_output" || return 1 |
| } |
| |
| function solr_test_rejects_d_option_with_invalid_config_dir() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME -d /asdf" |
| local expected_output="Specified configuration directory /asdf not found!" |
| local actual_output; actual_output=$($create_cmd) |
| |
| assert_cmd_failed "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_output" || return 1 |
| } |
| |
| function solr_test_accepts_d_option_with_explicit_builtin_config() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME -d sample_techproducts_configs" |
| local expected_output="Created collection 'COLL_NAME'" |
| local actual_output; actual_output=$($create_cmd) |
| |
| assert_cmd_succeeded "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_output" || return 1 |
| } |
| |
| function solr_test_accepts_d_option_with_explicit_path_to_config() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME -d $TMP_CONFIGSET_DIR" |
| local expected_output="Created collection 'COLL_NAME'" |
| local actual_output; actual_output=$($create_cmd) |
| |
| assert_cmd_succeeded "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_output" || return 1 |
| } |
| |
| function solr_test_accepts_n_option_as_config_name() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME -n other_conf_name" |
| local expected_name_output="Created collection 'COLL_NAME'" |
| local expected_config_name_output="config-set 'other_conf_name'" |
| local actual_output; actual_output=$($create_cmd) |
| |
| # Expect to fail, change to success |
| assert_cmd_succeeded "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_name_output" || return 1 |
| assert_output_contains "$actual_output" "$expected_config_name_output" || return 1 |
| } |
| |
| function solr_test_allows_config_reuse_when_n_option_specifies_same_config() { |
| local create_cmd1="bin/solr create_collection -c COLL_NAME_1 -n shared_config" |
| local expected_coll_name_output1="Created collection 'COLL_NAME_1'" |
| local create_cmd2="bin/solr create_collection -c COLL_NAME_2 -n shared_config" |
| local expected_coll_name_output2="Created collection 'COLL_NAME_2'" |
| local expected_config_name_output="config-set 'shared_config'" |
| |
| local actual_output1; actual_output1=$($create_cmd1) |
| assert_cmd_succeeded "$create_cmd1" || return 1 |
| assert_output_contains "$actual_output1" "$expected_coll_name_output1" || return 1 |
| assert_output_contains "$actual_output1" "$expected_config_name_output" || return 1 |
| |
| local actual_output2; actual_output2=$($create_cmd2) |
| assert_cmd_succeeded "$create_cmd2" || return 1 |
| assert_output_contains "$actual_output2" "$expected_coll_name_output2" || return 1 |
| assert_output_contains "$actual_output2" "$expected_config_name_output" || return 1 |
| } |
| |
| function solr_test_create_multisharded_collections_when_s_provided() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME -s 2" |
| local expected_coll_name_output="Created collection 'COLL_NAME'" |
| local expected_shards_output="2 shard(s)" |
| |
| local actual_output; actual_output=$($create_cmd) |
| assert_cmd_succeeded "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_coll_name_output" || return 1 |
| assert_output_contains "$actual_output" "$expected_shards_output" || return 1 |
| } |
| |
| function solr_test_creates_replicated_collections_when_r_provided() { |
| local create_cmd="bin/solr create_collection -c COLL_NAME -rf 2" |
| local expected_coll_name_output="Created collection 'COLL_NAME'" |
| local expected_rf_output="2 replica(s)" |
| |
| local actual_output; actual_output=$($create_cmd) |
| assert_cmd_succeeded "$create_cmd" || return 1 |
| assert_output_contains "$actual_output" "$expected_coll_name_output" || return 1 |
| assert_output_contains "$actual_output" "$expected_rf_output" || return 1 |
| } |