package org.wso2.carbon.databridge.commons;
import junit.framework.TestCase;
import org.junit.Test;
import org.wso2.carbon.databridge.commons.exception.MalformedEventException;
import org.wso2.carbon.databridge.commons.utils.EventConverterUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* Copyright (c) WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
* <p/>
* 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
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* 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.
*/
public class EventConversionTest extends TestCase {
private String properJSON2 = "[\n" +
" {\n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\"],\n" +
" \"timeStamp\" : 1339496299900\n" +
" }\n" +
" ,\n" +
" {\n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"]\n" +
" }\n" +
"\n" +
" ]";
private String properJSON = "[\n" +
" {\n" +
" \"streamId\" : \"foo::1.0.0\",\n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\"],\n" +
" \"timeStamp\" : 1312345432\n" +
" }\n" +
" ,\n" +
" {\n" +
" \"streamId\" : \"bar::2.1.0\", \n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"]\n" +
" }\n" +
"\n" +
" ]";
private String noStreamIdJSON = "[\n" +
" {\n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"],\n" +
" \"timeStamp\" : 1312345432\n" +
" }\n" +
" ,\n" +
" {\n" +
" \"streamId\" : \"bar::2.1.0\", \n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"]\n" +
" }\n" +
"\n" +
" ]";
private String emptyStreamIdJSON = "[\n" +
" {\n" +
" \"streamId\" : \"\", \n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"],\n" +
" \"timeStamp\" : 1312345432\n" +
" }\n" +
" ,\n" +
" {\n" +
" \"streamId\" : \"bar::2.1.0\", \n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"]\n" +
" }\n" +
"\n" +
" ]";
private String emptyArrayJSON = "[\n" +
" {\n" +
" \"streamId\" : \"foo::1.0.0\", \n" +
" \"payloadData\" : [] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"],\n" +
" \"timeStamp\" : 1312345432\n" +
" }\n" +
" ,\n" +
" {\n" +
" \"streamId\" : \"bar::2.1.0\", \n" +
" \"payloadData\" : [\"val1\", \"val2\"] ,\n" +
" \"metaData\" : [\"val1\", \"val2\", \"val3\"] ,\n" +
" \"correlationData\" : [\"val1\", \"val2\"]\n" +
" }\n" +
"\n" +
" ]";
@Test
public void testConversion() {
List<Event> eventList = EventConverterUtils.convertFromJson(properJSON);
assertEquals(2, eventList.size());
Event event = eventList.get(0);
assertEquals(event.getCorrelationData().length, 1);
assertEquals(event.getPayloadData().length, 2);
assertEquals(event.getMetaData().length, 3);
}
@Test(expected = MalformedEventException.class)
public void testNoStreamId() {
try {
EventConverterUtils.convertFromJson(noStreamIdJSON);
} catch (MalformedEventException e) {
}
}
@Test(expected = MalformedEventException.class)
public void testEmptyStreamId() {
try {
EventConverterUtils.convertFromJson(emptyStreamIdJSON);
} catch (MalformedEventException e) {
}
}
@Test
public void testEmptyEventArray() {
List<Event> eventList = EventConverterUtils.convertFromJson(emptyArrayJSON);
Event event = eventList.get(0);
assertEquals(event.getPayloadData().length, 0);
}
@Test
public void testRESTEventConversion() {
List<Event> eventList = EventConverterUtils.convertFromJson(properJSON2, "foo::1.0.0-" + UUID.randomUUID());
assertEquals(2, eventList.size());
Event event = eventList.get(0);
assertEquals(event.getCorrelationData().length, 1);
assertEquals(event.getPayloadData().length, 2);
assertEquals(event.getMetaData().length, 3);
}
@Test(expected = MalformedEventException.class)
public void testNullRESTEvents() {
try {
EventConverterUtils.convertFromJson(properJSON2, null);
} catch (MalformedEventException e) {
}
}
@Test(expected = MalformedEventException.class)
public void testEmptyRESTEvents() {
try {
EventConverterUtils.convertFromJson(properJSON2, "");
} catch (MalformedEventException e) {
return;
}
}
@Test
public void testEventEquality() {
Event event1 = new Event();
event1.setStreamId("foo:1.0.0");
event1.setPayloadData(new Object[]{"abc", 78.5, 45f});
Event event2 = new Event();
event2.setStreamId("foo:1.0.0");
event2.setPayloadData(new Object[]{"abc", 78.5, 45f});
assertEquals(event1, event2);
}
@Test
public void testEventListEquality() {
Event event1 = new Event();
event1.setStreamId("foo:1.0.0");
event1.setCorrelationData(new Object[]{"abc", 78.5, 45f, 34, 2.3});
event1.setMetaData(new Object[]{"abc", 78.5, true});
event1.setPayloadData(new Object[]{"abc", 78.5, 45f});
List event1s = new ArrayList<>();
event1s.add(event1);
event1s.add(event1);
Event event2 = new Event();
event2.setStreamId("foo:1.0.0");
event2.setCorrelationData(new Object[]{"abc", 78.5, 45f, 34, 2.3});
event2.setMetaData(new Object[]{"abc", 78.5, true});
event2.setPayloadData(new Object[]{"abc", 78.5, 45f});
List event2s = new ArrayList<>();
event2s.add(event2);
event2s.add(event2);
assertEquals(event1, event2);
assertEquals(event1s, event2s);
}
}