f8b11d723cca9ebcab0b9454834eec1997b1166b
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.clamp.controlloop.participant.simulator.main.parameters;
22
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26
27 import java.io.FileNotFoundException;
28 import org.apache.commons.io.DirectoryWalker.CancelException;
29 import org.junit.Test;
30 import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
31 import org.onap.policy.clamp.controlloop.participant.simulator.main.startstop.ParticipantSimulatorCommandLineArguments;
32 import org.onap.policy.common.utils.coder.CoderException;
33
34 /**
35  * Class to perform unit test of {@link ParticipantParameterHandler}.
36  */
37 public class TestParticipantSimulatorParameterHandler {
38
39     @Test
40     public void testParameterHandlerNoParameterFile() throws ControlLoopException {
41         final String[] emptyArgumentString = { "-c", "src/test/resources/parameters/NoParametersFile.json" };
42
43         final ParticipantSimulatorCommandLineArguments emptyArguments = new ParticipantSimulatorCommandLineArguments();
44         emptyArguments.parse(emptyArgumentString);
45
46         assertThatThrownBy(() -> new ParticipantSimulatorParameterHandler().getParameters(emptyArguments))
47             .hasCauseInstanceOf(CoderException.class)
48             .hasRootCauseInstanceOf(FileNotFoundException.class);
49     }
50
51     @Test
52     public void testParameterHandlerInvalidParameters() throws ControlLoopException {
53         final String[] invalidArgumentString = { "-c", "src/test/resources/parameters/InvalidParameters.json" };
54
55         final ParticipantSimulatorCommandLineArguments invalidArguments =
56                 new ParticipantSimulatorCommandLineArguments();
57         invalidArguments.parse(invalidArgumentString);
58
59         assertThatThrownBy(() -> new ParticipantSimulatorParameterHandler().getParameters(invalidArguments))
60             .hasMessageStartingWith("error reading parameters from")
61             .hasCauseInstanceOf(CoderException.class);
62     }
63
64     @Test
65     public void testParameterHandlerNoParameters() throws CancelException, ControlLoopException {
66         final String[] noArgumentString = { "-c", "src/test/resources/parameters/EmptyParameters.json" };
67
68         final ParticipantSimulatorCommandLineArguments noArguments = new ParticipantSimulatorCommandLineArguments();
69         noArguments.parse(noArgumentString);
70
71         assertThatThrownBy(() -> new ParticipantSimulatorParameterHandler().getParameters(noArguments))
72             .hasMessageContaining("no parameters found");
73     }
74
75     @Test
76     public void testParticipantParameterGroup() throws ControlLoopException {
77         final String[] participantConfigParameters = { "-c", "src/test/resources/parameters/TestParameters.json"};
78
79         final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments();
80         arguments.parse(participantConfigParameters);
81
82         final ParticipantSimulatorParameters parGroup = new ParticipantSimulatorParameterHandler()
83                 .getParameters(arguments);
84         assertTrue(arguments.checkSetConfigurationFilePath());
85         assertEquals(CommonTestData.PARTICIPANT_GROUP_NAME, parGroup.getName());
86     }
87
88     @Test
89     public void testParticipantVersion() throws ControlLoopException {
90         final String[] participantConfigParameters = { "-v" };
91         final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments();
92         final String version = arguments.parse(participantConfigParameters);
93         assertTrue(version.startsWith("ONAP Tosca defined control loop Participant"));
94     }
95
96     @Test
97     public void testParticipantHelp() throws ControlLoopException {
98         final String[] participantConfigParameters = { "-h" };
99         final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments();
100         final String help = arguments.parse(participantConfigParameters);
101         assertTrue(help.startsWith("usage:"));
102     }
103
104     @Test
105     public void testParticipant_TooManyArguments() throws ControlLoopException {
106         final String[] participantConfigParameters = { "-c", "src/test/resources/parameters/TestParameters.json",
107                                                        "TooMany"};
108         final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments();
109         assertThatThrownBy(() -> arguments.parse(participantConfigParameters))
110             .hasMessageStartingWith("too many command line arguments specified");
111     }
112
113     @Test
114     public void testParticipantInvalidOption() throws ControlLoopException {
115         final String[] participantConfigParameters = { "-d" };
116         final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments();
117         assertThatThrownBy(() -> arguments.parse(participantConfigParameters))
118             .hasMessageStartingWith("invalid command line arguments specified");
119     }
120 }