32b463d6f9da3d01fd91b3b610e5a36ded532a1b
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
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.apex.apps.uservice.test.adapt.websocket;
22
23 import org.onap.policy.apex.apps.uservice.test.adapt.events.EventGenerator;
24 import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
25 import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
26 import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
27 import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
28
29 public class WebSocketEventProducerServer implements WSStringMessageListener {
30     private final int port;
31     private final int eventCount;
32     private final boolean xmlEvents;
33     private final long eventInterval;
34     private long eventsSentCount = 0;
35
36     WSStringMessageServer server;
37
38     public WebSocketEventProducerServer(final int port, final int eventCount, final boolean xmlEvents,
39             final long eventInterval) throws MessagingException {
40         this.port = port;
41         this.eventCount = eventCount;
42         this.xmlEvents = xmlEvents;
43         this.eventInterval = eventInterval;
44
45         server = new WSStringMessageServer(port);
46         server.start(this);
47
48         System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": port " + port + ", event count "
49                 + eventCount + ", xmlEvents " + xmlEvents);
50     }
51
52     public void sendEvents() {
53         System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": sending events on port " + port
54                 + ", event count " + eventCount + ", xmlEvents " + xmlEvents);
55
56         for (int i = 0; i < eventCount; i++) {
57             System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": waiting " + eventInterval
58                     + " milliseconds before sending next event");
59             ThreadUtilities.sleep(eventInterval);
60
61             String eventString = null;
62             if (xmlEvents) {
63                 eventString = EventGenerator.xmlEvent();
64             } else {
65                 eventString = EventGenerator.jsonEvent();
66             }
67             server.sendString(eventString);
68             eventsSentCount++;
69             System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": port " + port
70                     + ", sent event " + eventString);
71         }
72
73         System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": event sending completed");
74     }
75
76     public long getEventsSentCount() {
77         return eventsSentCount;
78     }
79
80     public void shutdown() {
81         server.stop();
82         System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": stopped");
83     }
84
85     /*
86      * (non-Javadoc)
87      * 
88      * @see
89      * org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener#
90      * receiveString(java.lang.String)
91      */
92     @Override
93     public void receiveString(final String eventString) {
94         System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": port " + port
95                 + ", received event " + eventString);
96     }
97
98     public static void main(final String[] args) throws MessagingException {
99         if (args.length != 4) {
100             System.err.println("usage WebSocketEventProducerServer port #events XML|JSON eventInterval");
101             return;
102         }
103
104         int port = 0;
105         try {
106             port = Integer.parseInt(args[0]);
107         } catch (final Exception e) {
108             System.err.println("usage WebSocketEventProducerServer port #events XML|JSON eventInterval");
109             e.printStackTrace();
110             return;
111         }
112
113         int eventCount = 0;
114         try {
115             eventCount = Integer.parseInt(args[1]);
116         } catch (final Exception e) {
117             System.err.println("usage WebSocketEventProducerServer port #events XML|JSON eventInterval");
118             e.printStackTrace();
119             return;
120         }
121
122         long eventInterval = 0;
123         try {
124             eventInterval = Long.parseLong(args[3]);
125         } catch (final Exception e) {
126             System.err.println("usage WebSocketEventProducerServer port #events XML|JSON eventInterval");
127             e.printStackTrace();
128             return;
129         }
130
131         boolean xmlEvents = false;
132         if (args[2].equalsIgnoreCase("XML")) {
133             xmlEvents = true;
134         } else if (!args[2].equalsIgnoreCase("JSON")) {
135             System.err.println("usage WebSocketEventProducerServer port #events XML|JSON startDelay eventInterval");
136             return;
137         }
138
139         final WebSocketEventProducerServer server =
140                 new WebSocketEventProducerServer(port, eventCount, xmlEvents, eventInterval);
141
142         server.sendEvents();
143         server.shutdown();
144     }
145 }