#!/usr/bin/env bash

#  ============LICENSE_START===============================================
#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
#  ========================================================================
#  Licensed 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.
#  ============LICENSE_END=================================================
#

TC_ONELINE_DESCR="Resync 10000 policies using OSC interface over REST"

. ../common/testcase_common.sh  $@
. ../common/agent_api_functions.sh
. ../common/ricsimulator_api_functions.sh

#### TEST BEGIN ####

#Local vars in test script
##########################
# Path to callback receiver
CR_PATH="http://$CR_APP_NAME:$CR_EXTERNAL_PORT/callbacks"

clean_containers

start_ric_simulators ricsim_g1 4 OSC_2.1.0

start_mr

start_cr

start_consul_cbs

prepare_consul_config      NOSDNC  ".consul_config.json"
consul_config_app                  ".consul_config.json"

start_control_panel


start_policy_agent

use_agent_rest_http

api_get_status 200

sim_print ricsim_g1_1 interface

sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json

api_equal json:policy_types 1 120  #Wait for the agent to refresh types from the simulator

api_put_service 201 "rapp1" 3600 "$CR_PATH/callbacks/1"

api_put_policy 201 "rapp1" ricsim_g1_1 1 2000 testdata/OSC/pi1_template.json 10000

sim_equal ricsim_g1_1 num_instances 10000

sim_post_delete_instances 200 ricsim_g1_1

sim_equal ricsim_g1_1 num_instances 0

sim_equal ricsim_g1_1 num_instances 10000 300

api_delete_policy 204 2435

api_delete_policy 204 8693

sim_post_delete_instances 200 ricsim_g1_1

sim_post_delete_instances 200 ricsim_g1_1

sim_equal ricsim_g1_1 num_instances 9998 300


check_policy_agent_logs

#### TEST COMPLETE ####

store_logs          END

print_result