Containerization feature of SO
[so.git] / adapters / mso-sdnc-adapter / src / test / java / org / onap / so / adapters / sdnc / sdncrest / ObjectMappingTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.adapters.sdnc.sdncrest;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26
27 import java.io.ByteArrayOutputStream;
28 import java.io.IOException;
29 import java.io.ObjectOutputStream;
30 import java.io.Serializable;
31 import java.util.Arrays;
32
33 import org.junit.Test;
34 import org.onap.so.adapters.sdncrest.SDNCEvent;
35 import org.onap.so.adapters.sdncrest.SDNCServiceError;
36 import org.onap.so.adapters.sdncrest.SDNCServiceRequest;
37 import org.onap.so.adapters.sdncrest.SDNCServiceResponse;
38
39 import com.fasterxml.jackson.databind.DeserializationFeature;
40 import com.fasterxml.jackson.databind.ObjectMapper;
41 import com.fasterxml.jackson.databind.SerializationFeature;
42
43
44
45 /**
46  * JSON object mapping tests.
47  */
48 public class ObjectMappingTest {
49         private static final String EOL = "\n";
50
51         private final String SDNC_SERVICE_REQUEST =
52                 "{" + EOL +
53                 "  \"SDNCServiceRequest\": {" + EOL +
54                 "    \"requestInformation\": {" + EOL +
55                 "      \"requestId\": \"413658f4-7f42-482e-b834-23a5c15657da\"," + EOL +
56                 "      \"source\": \"CCD\"," + EOL +
57                 "      \"notificationUrl\": \"https://ccd-host:8080/notifications\"" + EOL +
58                 "  }," + EOL +
59                 "  \"serviceInformation\": {" + EOL +
60                 "    \"serviceType\": \"vHNFaaS\"," + EOL +
61                 "    \"serviceInstanceId\": \"74e65b2b637441bca078e63e44bb511b\"," + EOL +
62                 "    \"subscriberName\": \"IST_SG_0902_3003\"," + EOL +
63                 "    \"subscriberGlobalId\": \"IST15_0902_3003\"" + EOL +
64                 "  }," + EOL +
65                 "  \"bpNotificationUrl\": \"http://localhost:8080/mso/SDNCAdapterCallbackService\"," + EOL +
66                 "((BP-TIMEOUT))" +
67                 "  \"sdncRequestId\": \"413658f4-7f42-482e-b834-23a5c15657da-1474471336781\"," + EOL +
68                 "  \"sdncService\": \"vhnf\"," + EOL +
69                 "  \"sdncOperation\": \"service-topology-cust-assign-operation\"," + EOL +
70                 "  \"sdncServiceDataType\": \"XML\"," + EOL +
71                 "  \"sdncServiceData\": \"<vhnf-cust-stage-information><dhv-service-instance-id>c26dfed652164d60a17461734422b085</dhv-service-instance-id><hnportal-primary-vnf-host-name>HOSTNAME</hnportal-primary-vnf-host-name></vhnf-cust-stage-information>\"" + EOL +
72                 "  }" + EOL +
73                 "}" + EOL;
74
75         private final String SDNC_SERVICE_RESPONSE =
76                 "{" + EOL +
77                 "  \"SDNCServiceResponse\": {" + EOL +
78                 "    \"sdncRequestId\": \"413658f4-7f42-482e-b834-23a5c15657da-1474471336781\"," + EOL +
79                 "    \"responseCode\": \"200\"," + EOL +
80                 "((RESPONSE-MESSAGE))" +
81                 "    \"ackFinalIndicator\": \"Y\"" + EOL +
82                 "((RESPONSE-PARAMS))" +
83                 "  }" + EOL +
84                 "}" + EOL;
85
86         private final String SDNC_SERVICE_ERROR =
87                 "{" + EOL +
88                 "  \"SDNCServiceError\": {" + EOL +
89                 "    \"sdncRequestId\": \"413658f4-7f42-482e-b834-23a5c15657da-1474471336781\"," + EOL +
90                 "    \"responseCode\": \"500\"," + EOL +
91                 "((RESPONSE-MESSAGE))" +
92                 "    \"ackFinalIndicator\": \"Y\"" + EOL +
93                 "  }" + EOL +
94                 "}" + EOL;
95
96         private final String SDNC_EVENT =
97                 "{" + EOL +
98                 "  \"SDNCEvent\": {" + EOL +
99                 "    \"eventType\": \"ACTIVATION\"," + EOL +
100                 "    \"eventCorrelatorType\": \"HOST-NAME\"," + EOL +
101                 "    \"eventCorrelator\": \"USOSTCDALTX0101UJZZ31\"" + EOL +
102                 "((EVENT-PARAMS))" +
103                 "  }" + EOL +
104                 "}" + EOL;
105
106         private final String PARAMS =
107                 "{\"P1\":\"V1\",\"P2\":\"V2\",\"P3\":\"V3\"}";
108
109         @Test
110         public final void jsonToSDNCServiceRequest() throws Exception {
111                 logTest();
112                 ObjectMapper mapper = new ObjectMapper();
113                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
114                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
115
116                 String json = SDNC_SERVICE_REQUEST;
117                 json = json.replace("((BP-TIMEOUT))", "\"bpTimeout\": \"" + "PT5M" + "\"," + EOL);
118
119                 SDNCServiceRequest object = mapper.readValue(json, SDNCServiceRequest.class);
120                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da", object.getRequestInformation().getRequestId());
121                 assertEquals("CCD", object.getRequestInformation().getSource());
122                 assertEquals("https://ccd-host:8080/notifications", object.getRequestInformation().getNotificationUrl());
123                 assertEquals("vHNFaaS", object.getServiceInformation().getServiceType());
124                 assertEquals("74e65b2b637441bca078e63e44bb511b", object.getServiceInformation().getServiceInstanceId());
125                 assertEquals("IST_SG_0902_3003", object.getServiceInformation().getSubscriberName());
126                 assertEquals("IST15_0902_3003", object.getServiceInformation().getSubscriberGlobalId());
127                 assertEquals("http://localhost:8080/mso/SDNCAdapterCallbackService", object.getBPNotificationUrl());
128                 assertEquals("PT5M", object.getBPTimeout());
129                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da-1474471336781", object.getSdncRequestId());
130                 assertEquals("vhnf", object.getSdncService());
131                 assertEquals("service-topology-cust-assign-operation", object.getSdncOperation());
132                 assertEquals("XML", object.getSdncServiceDataType());
133                 assertTrue(object.getSdncServiceData().startsWith("<vhnf-cust-stage-information>"));
134         }
135
136         @Test
137         public final void jsonToSDNCServiceRequestWithoutOptionalFields() throws Exception {
138                 logTest();
139                 ObjectMapper mapper = new ObjectMapper();
140                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
141                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
142
143                 // bpTimeout is optional.
144                 String json = SDNC_SERVICE_REQUEST;
145                 json = json.replace("((BP-TIMEOUT))", "");
146
147                 SDNCServiceRequest object = mapper.readValue(json, SDNCServiceRequest.class);
148                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da", object.getRequestInformation().getRequestId());
149                 assertEquals("CCD", object.getRequestInformation().getSource());
150                 assertEquals("https://ccd-host:8080/notifications", object.getRequestInformation().getNotificationUrl());
151                 assertEquals("vHNFaaS", object.getServiceInformation().getServiceType());
152                 assertEquals("74e65b2b637441bca078e63e44bb511b", object.getServiceInformation().getServiceInstanceId());
153                 assertEquals("IST_SG_0902_3003", object.getServiceInformation().getSubscriberName());
154                 assertEquals("IST15_0902_3003", object.getServiceInformation().getSubscriberGlobalId());
155                 assertEquals("http://localhost:8080/mso/SDNCAdapterCallbackService", object.getBPNotificationUrl());
156                 assertNull(object.getBPTimeout());
157                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da-1474471336781", object.getSdncRequestId());
158                 assertEquals("vhnf", object.getSdncService());
159                 assertEquals("service-topology-cust-assign-operation", object.getSdncOperation());
160                 assertEquals("XML", object.getSdncServiceDataType());
161                 assertTrue(object.getSdncServiceData().startsWith("<vhnf-cust-stage-information>"));
162         }
163
164         @Test
165         public final void jsonFromSDNCServiceRequest() throws Exception {
166                 logTest();
167                 ObjectMapper mapper = new ObjectMapper();
168                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
169                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
170
171                 // Convert source json string to object.
172                 String json1 = SDNC_SERVICE_REQUEST;
173                 json1 = json1.replace("((BP-TIMEOUT))", "\"bpTimeout\": \"" + "PT5M" + "\"," + EOL);
174                 SDNCServiceRequest object1 = mapper.readValue(json1, SDNCServiceRequest.class);
175
176                 // Convert resulting object back to json.
177                 String json2 = object1.toJson();
178                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
179                         + ":" + System.lineSeparator() + json2);
180                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCServiceRequest\":{"));
181
182                 // Convert generated json string to another object.
183                 SDNCServiceRequest object2 = mapper.readValue(json2, SDNCServiceRequest.class);
184
185                 // Compare the first object to the second object.
186                 assertTrue(serializedEquals(object1, object2));
187         }
188
189         @Test
190         public final void jsonFromSDNCServiceRequestWithoutOptionalFields() throws Exception {
191                 logTest();
192                 ObjectMapper mapper = new ObjectMapper();
193                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
194                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
195
196                 // Convert source json string to object.
197                 String json1 = SDNC_SERVICE_REQUEST;
198                 json1 = json1.replace("((BP-TIMEOUT))", "");
199                 SDNCServiceRequest object1 = mapper.readValue(json1, SDNCServiceRequest.class);
200
201                 // Convert resulting object back to json.
202                 String json2 = object1.toJson();
203                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
204                         + ":" + System.lineSeparator() + json2);
205                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCServiceRequest\":{"));
206
207                 // Convert generated json string to another object.
208                 SDNCServiceRequest object2 = mapper.readValue(json2, SDNCServiceRequest.class);
209
210                 // Compare the first object to the second object.
211                 assertTrue(serializedEquals(object1, object2));
212         }
213
214         @Test
215         public final void jsonToSDNCServiceResponse() throws Exception {
216                 logTest();
217                 ObjectMapper mapper = new ObjectMapper();
218                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
219                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
220
221                 String json = SDNC_SERVICE_RESPONSE;
222                 json = json.replace("((RESPONSE-MESSAGE))", "    \"responseMessage\": \"" + "OK" + "\"," + EOL);
223                 json = json.replace(EOL + "((RESPONSE-PARAMS))", "," + EOL + "    \"params\": " + PARAMS + EOL);
224
225                 SDNCServiceResponse object = mapper.readValue(json, SDNCServiceResponse.class);
226                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da-1474471336781", object.getSdncRequestId());
227                 assertEquals("200", object.getResponseCode());
228                 assertEquals("OK", object.getResponseMessage());
229                 assertEquals("Y", object.getAckFinalIndicator());
230                 assertEquals("V1", object.getParams().get("P1"));
231                 assertEquals("V2", object.getParams().get("P2"));
232                 assertEquals("V3", object.getParams().get("P3"));
233         }
234
235         @Test
236         public final void jsonToSDNCServiceResponseWithoutOptionalFields() throws Exception {
237                 logTest();
238                 ObjectMapper mapper = new ObjectMapper();
239                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
240                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
241
242                 // responseMessage is optional.
243                 String json = SDNC_SERVICE_RESPONSE;
244                 json = json.replace("((RESPONSE-MESSAGE))", "");
245                 json = json.replace("((RESPONSE-PARAMS))", "");
246
247                 SDNCServiceResponse object = mapper.readValue(json, SDNCServiceResponse.class);
248                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da-1474471336781", object.getSdncRequestId());
249                 assertEquals("200", object.getResponseCode());
250                 assertNull(object.getResponseMessage());
251                 assertEquals("Y", object.getAckFinalIndicator());
252                 assertNull(object.getParams());
253         }
254
255         @Test
256         public final void jsonFromSDNCServiceResponse() throws Exception {
257                 logTest();
258                 ObjectMapper mapper = new ObjectMapper();
259                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
260                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
261
262                 // Convert source json string to object.
263                 String json1 = SDNC_SERVICE_RESPONSE;
264                 json1 = json1.replace("((RESPONSE-MESSAGE))", "\"responseMessage\": \"" + "OK" + "\"," + EOL);
265                 json1 = json1.replace(EOL + "((RESPONSE-PARAMS))", "," + EOL + "    \"params\": " + PARAMS + EOL);
266                 SDNCServiceResponse object1 = mapper.readValue(json1, SDNCServiceResponse.class);
267
268                 // Convert resulting object back to json.
269                 String json2 = object1.toJson();
270                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
271                         + ":" + System.lineSeparator() + json2);
272                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCServiceResponse\":{"));
273
274                 // Convert generated json string to another object.
275                 SDNCServiceResponse object2 = mapper.readValue(json2, SDNCServiceResponse.class);
276
277                 // Compare the first object to the second object.
278                 assertTrue(serializedEquals(object1, object2));
279         }
280
281         @Test
282         public final void jsonFromSDNCServiceResponseWithoutOptionalFields() throws Exception {
283                 logTest();
284                 ObjectMapper mapper = new ObjectMapper();
285                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
286                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
287
288                 // Convert source json string to object.
289                 String json1 = SDNC_SERVICE_RESPONSE;
290                 json1 = json1.replace("((RESPONSE-MESSAGE))", "");
291                 json1 = json1.replace("((RESPONSE-PARAMS))", "");
292                 SDNCServiceResponse object1 = mapper.readValue(json1, SDNCServiceResponse.class);
293
294                 // Convert resulting object back to json.
295                 String json2 = object1.toJson();
296                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
297                         + ":" + System.lineSeparator() + json2);
298                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCServiceResponse\":{"));
299
300                 // Convert generated json string to another object.
301                 SDNCServiceResponse object2 = mapper.readValue(json2, SDNCServiceResponse.class);
302
303                 // Compare the first object to the second object.
304                 assertTrue(serializedEquals(object1, object2));
305         }
306
307         @Test
308         public final void jsonToSDNCServiceError() throws Exception {
309                 logTest();
310                 ObjectMapper mapper = new ObjectMapper();
311                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
312                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
313
314                 String json = SDNC_SERVICE_ERROR;
315                 json = json.replace("((RESPONSE-MESSAGE))", "\"responseMessage\": \"" + "SOMETHING BAD" + "\"," + EOL);
316
317                 SDNCServiceError object = mapper.readValue(json, SDNCServiceError.class);
318                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da-1474471336781", object.getSdncRequestId());
319                 assertEquals("500", object.getResponseCode());
320                 assertEquals("SOMETHING BAD", object.getResponseMessage());
321                 assertEquals("Y", object.getAckFinalIndicator());
322         }
323
324         @Test
325         public final void jsonToSDNCServiceErrorWithoutOptionalFields() throws Exception {
326                 logTest();
327                 ObjectMapper mapper = new ObjectMapper();
328                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
329                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
330
331                 // responseMessage is optional.
332                 String json = SDNC_SERVICE_ERROR;
333                 json = json.replace("((RESPONSE-MESSAGE))", "");
334
335                 SDNCServiceError object = mapper.readValue(json, SDNCServiceError.class);
336                 assertEquals("413658f4-7f42-482e-b834-23a5c15657da-1474471336781", object.getSdncRequestId());
337                 assertEquals("500", object.getResponseCode());
338                 assertNull(object.getResponseMessage());
339                 assertEquals("Y", object.getAckFinalIndicator());
340         }
341
342         @Test
343         public final void jsonFromSDNCServiceError() throws Exception {
344                 logTest();
345                 ObjectMapper mapper = new ObjectMapper();
346                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
347                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
348
349                 // Convert source json string to object.
350                 String json1 = SDNC_SERVICE_ERROR;
351                 json1 = json1.replace("((RESPONSE-MESSAGE))", "\"responseMessage\": \"" + "OK" + "\"," + EOL);
352                 SDNCServiceError object1 = mapper.readValue(json1, SDNCServiceError.class);
353
354                 // Convert resulting object back to json.
355                 String json2 = object1.toJson();
356                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
357                         + ":" + System.lineSeparator() + json2);
358                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCServiceError\":{"));
359
360                 // Convert generated json string to another object.
361                 SDNCServiceError object2 = mapper.readValue(json2, SDNCServiceError.class);
362
363                 // Compare the first object to the second object.
364                 assertTrue(serializedEquals(object1, object2));
365         }
366
367         @Test
368         public final void jsonFromSDNCServiceErrorWithoutOptionalFields() throws Exception {
369                 logTest();
370                 ObjectMapper mapper = new ObjectMapper();
371                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
372                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
373
374                 // Convert source json string to object.
375                 String json1 = SDNC_SERVICE_ERROR;
376                 json1 = json1.replace("((RESPONSE-MESSAGE))", "");
377                 SDNCServiceError object1 = mapper.readValue(json1, SDNCServiceError.class);
378
379                 // Convert resulting object back to json.
380                 String json2 = object1.toJson();
381                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
382                         + ":" + System.lineSeparator() + json2);
383                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCServiceError\":{"));
384
385                 // Convert generated json string to another object.
386                 SDNCServiceError object2 = mapper.readValue(json2, SDNCServiceError.class);
387
388                 // Compare the first object to the second object.
389                 assertTrue(serializedEquals(object1, object2));
390         }
391
392         @Test
393         public final void jsonToSDNCEvent() throws Exception {
394                 logTest();
395                 ObjectMapper mapper = new ObjectMapper();
396                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
397                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
398
399                 String json = SDNC_EVENT;
400                 json = json.replace(EOL + "((EVENT-PARAMS))", "," + EOL + "    \"params\": " + PARAMS + EOL);
401
402                 SDNCEvent object = mapper.readValue(json, SDNCEvent.class);
403                 assertEquals("ACTIVATION", object.getEventType());
404                 assertEquals("HOST-NAME", object.getEventCorrelatorType());
405                 assertEquals("USOSTCDALTX0101UJZZ31", object.getEventCorrelator());
406                 assertEquals("V1", object.getParams().get("P1"));
407                 assertEquals("V2", object.getParams().get("P2"));
408                 assertEquals("V3", object.getParams().get("P3"));
409         }
410
411         @Test
412         public final void jsonToSDNCEventWithoutOptionalFields() throws Exception {
413                 logTest();
414                 ObjectMapper mapper = new ObjectMapper();
415                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
416                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
417
418                 // params are optional.
419                 String json = SDNC_EVENT;
420                 json = json.replace("((EVENT-PARAMS))", "");
421
422                 SDNCEvent object = mapper.readValue(json, SDNCEvent.class);
423                 assertEquals("ACTIVATION", object.getEventType());
424                 assertEquals("HOST-NAME", object.getEventCorrelatorType());
425                 assertEquals("USOSTCDALTX0101UJZZ31", object.getEventCorrelator());
426                 assertNull(object.getParams());
427         }
428
429         @Test
430         public final void jsonFromSDNCEvent() throws Exception {
431                 logTest();
432                 ObjectMapper mapper = new ObjectMapper();
433                 mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
434                 mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
435
436                 // Convert source json string to object.
437                 String json1 = SDNC_EVENT;
438                 json1 = json1.replace(EOL + "((EVENT-PARAMS))", "," + EOL + "    \"params\": " + PARAMS + EOL);
439                 SDNCEvent object1 = mapper.readValue(json1, SDNCEvent.class);
440
441                 // Convert resulting object back to json.
442                 String json2 = object1.toJson();
443                 System.out.println("Generated JSON for " + object1.getClass().getSimpleName()
444                         + ":" + System.lineSeparator() + json2);
445                 assertTrue(json2.replaceAll("\\s+","").startsWith("{\"SDNCEvent\":{"));
446
447                 // Convert generated json string to another object.
448                 SDNCEvent object2 = mapper.readValue(json2, SDNCEvent.class);
449
450                 // Compare the first object to the second object.
451                 assertTrue(serializedEquals(object1, object2));
452         }
453
454         /**
455          * Tests equality of two objects by comparing their serialized form.
456          * WARNING: this works pretty well as long as the objects don't contain
457          * collections like maps and sets that are semantically equal, but have
458          * different internal ordering of elements.
459          */
460         private boolean serializedEquals(Serializable object1, Serializable object2) throws IOException {
461                 ByteArrayOutputStream byteStream1 = new ByteArrayOutputStream();
462                 ObjectOutputStream objectStream1 = new ObjectOutputStream(byteStream1);
463                 objectStream1.writeObject(object1);
464                 objectStream1.close();
465
466                 ByteArrayOutputStream byteStream2 = new ByteArrayOutputStream();
467                 ObjectOutputStream objectStream2 = new ObjectOutputStream(byteStream2);
468                 objectStream2.writeObject(object2);
469                 objectStream2.close();
470
471                 return Arrays.equals(byteStream1.toByteArray(), byteStream2.toByteArray());
472         }
473
474         private void logTest() {
475                 StackTraceElement[] st = Thread.currentThread().getStackTrace();
476                 String method = st[2].getMethodName();
477                 System.out.println("RUNNING TEST: " + method);
478         }
479 }