Task to add ConfigScaleOut to LCM API, Yang Model.
[appc.git] / appc-client / client-kit / src / test / java / org / onap / appc / client / lcm / model / TestModelPOJO.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * 
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.appc.client.lcm.model;
26
27 import org.junit.Assert;
28 import org.junit.Test;
29
30 import java.lang.reflect.Field;
31 import java.lang.reflect.Method;
32 import java.util.ArrayList;
33 import java.util.List;
34
35 public class TestModelPOJO {
36     static List<Class> pojoClassName;
37     static List<String> fields;
38     static{
39         pojoClassName = new ArrayList<>();
40         pojoClassName.add(AuditInput.class);
41         pojoClassName.add(AuditOutput.class);
42         pojoClassName.add(CheckLockInput.class);
43         pojoClassName.add(CheckLockOutput.class);
44         pojoClassName.add(ConfigBackupDeleteInput.class);
45         pojoClassName.add(ConfigBackupDeleteOutput.class);
46         pojoClassName.add(ConfigBackupInput.class);
47         pojoClassName.add(ConfigBackupOutput.class);
48         pojoClassName.add(ConfigExportInput.class);
49         pojoClassName.add(ConfigExportOutput.class);
50         pojoClassName.add(ConfigModifyInput.class);
51         pojoClassName.add(ConfigModifyOutput.class);
52         pojoClassName.add(ConfigRestoreInput.class);
53         pojoClassName.add(ConfigRestoreOutput.class);
54         pojoClassName.add(ConfigureInput.class);
55         pojoClassName.add(ConfigureOutput.class);
56         pojoClassName.add(EvacuateInput.class);
57         pojoClassName.add(EvacuateOutput.class);
58         pojoClassName.add(HealthCheckInput.class);
59         pojoClassName.add(HealthCheckOutput.class);
60         pojoClassName.add(LiveUpgradeInput.class);
61         pojoClassName.add(LiveUpgradeOutput.class);
62         pojoClassName.add(LockInput.class);
63         pojoClassName.add(LockOutput.class);
64         pojoClassName.add(MigrateInput.class);
65         pojoClassName.add(MigrateOutput.class);
66         pojoClassName.add(RebuildInput.class);
67         pojoClassName.add(RebuildOutput.class);
68         pojoClassName.add(HealthCheckInput.class);
69         pojoClassName.add(RollbackInput.class);
70         pojoClassName.add(RollbackOutput.class);
71         pojoClassName.add(RestartInput.class);
72         pojoClassName.add(RestartOutput.class);
73         pojoClassName.add(SnapshotInput.class);
74         pojoClassName.add(SnapshotOutput.class);
75         pojoClassName.add(SoftwareUploadInput.class);
76         pojoClassName.add(SoftwareUploadOutput.class);
77         pojoClassName.add(StartApplicationInput.class);
78         pojoClassName.add(StartApplicationOutput.class);
79         pojoClassName.add(StartInput.class);
80         pojoClassName.add(StartOutput.class);
81         pojoClassName.add(StopApplicationInput.class);
82         pojoClassName.add(StopApplicationOutput.class);
83         pojoClassName.add(StopInput.class);
84         pojoClassName.add(SyncInput.class);
85         pojoClassName.add(SyncOutput.class);
86         pojoClassName.add(TerminateInput.class);
87         pojoClassName.add(TerminateOutput.class);
88         pojoClassName.add(TestInput.class);
89         pojoClassName.add(TestOutput.class);
90         pojoClassName.add(UnlockInput.class);
91         pojoClassName.add(UnlockOutput.class);
92
93         fields = new ArrayList<>();
94         fields.add("CommonHeader");
95         fields.add("Action");
96         fields.add("Payload");
97         fields.add("Status");
98     }
99     @Test
100     public void testModel() throws Exception{
101         for(String field: fields){
102             for(Class c: pojoClassName){
103                 Object instance = c.newInstance();
104                 Field[] fields =  c.getDeclaredFields();
105                 for(Field f: fields){
106                     if(f.getType() == getClassForString(field)){
107                         Method m = c.getDeclaredMethod("set"+field,getClassForString(field));
108                         Object argument = createArgument(field);
109                         m.invoke(instance,argument);
110
111                         Method getter = c.getDeclaredMethod("get"+field);
112                         Object getValue = getter.invoke(instance);
113                         Assert.assertEquals("POJO test failed for class:"+c.getCanonicalName()+" for method:"+m.getName(),argument, getValue);
114                     }
115                 }
116             }
117         }
118     }
119
120     private Object createArgument(String field){
121         if(field.equals("CommonHeader")){
122             return createHeader();
123         }
124         else if(field.equals("Action")){
125             return createAction();
126         }else if(field.equals("Payload")){
127             return createPayload();
128         }else if(field.equals("Status")){
129             return createStatus();
130         }
131
132         throw new IllegalArgumentException();
133     }
134
135     private Action createAction(){
136         return Action.Restart;
137     }
138     private Payload createPayload(){
139         return new Payload();
140     }
141     private CommonHeader createHeader(){
142         CommonHeader header = new CommonHeader();
143         header.setApiVer("apiver");
144         header.setOriginatorId("originator");
145         return header;
146     }
147     private Status createStatus() {
148         return new Status();
149     }
150
151     private Class getClassForString(String field){
152
153         if(field.equals("CommonHeader")){
154             return CommonHeader.class;
155         }else if(field.equals("Action")){
156             return Action.class;
157         }else if(field.equals("ActionIdentifiers")){
158             return ActionIdentifiers.class;
159         }else if(field.equals("Payload")){
160             return Payload.class;
161         }else if(field.equals("Status")){
162             return Status.class;
163         }
164         throw new IllegalArgumentException();
165     }
166 }