/**
* Copyright (C) 2014 Stratio (http://stratio.com)
*
* 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*/
package com.stratio.decision.callbacks;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.doNothing;
import java.util.List;
import java.util.Set;
import org.apache.avro.specific.SpecificDatumReader;
import org.apache.commons.collections.set.ListOrderedSet;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.wso2.siddhi.core.SiddhiManager;
import org.wso2.siddhi.core.event.Event;
import com.stratio.decision.commons.avro.InsertMessage;
import com.stratio.decision.commons.constants.StreamAction;
import com.stratio.decision.commons.messages.StratioStreamingMessage;
import com.stratio.decision.configuration.StreamingSiddhiConfiguration;
import com.stratio.decision.factory.GsonFactory;
import com.stratio.decision.serializer.impl.JavaToAvroSerializer;
import com.stratio.decision.serializer.impl.JavaToSiddhiSerializer;
import com.stratio.decision.serializer.impl.KafkaToJavaSerializer;
import com.stratio.decision.service.StreamMetadataService;
import com.stratio.decision.service.StreamsHelper;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
/**
* Created by aitor on 10/7/15.
*/
public class StreamToActionBusCallbackTest {
private JavaToSiddhiSerializer javaToSiddhiSerializer;
private JavaToAvroSerializer javaToAvroSerializer;
private StreamMetadataService metadataService;
private SiddhiManager siddhiManager;
private StreamToActionBusCallback cbk;
private static final String streamName= "testStream";
@Mock
private Producer<String, String> producer;
@Mock
private Producer<String, byte[]> avroProducer;
@Before
public void setUp() throws Exception {
siddhiManager= new StreamingSiddhiConfiguration().siddhiManager();
siddhiManager.defineStream(StreamsHelper.STREAM_DEFINITION);
metadataService= new StreamMetadataService(siddhiManager);
javaToSiddhiSerializer= new JavaToSiddhiSerializer(metadataService);
javaToAvroSerializer = new JavaToAvroSerializer(new SpecificDatumReader(InsertMessage.getClassSchema()));
Set<StreamAction> activeActions= new ListOrderedSet();
activeActions.add(StreamAction.LISTEN);
producer= Mockito.mock(Producer.class);
avroProducer= Mockito.mock(Producer.class);
//List<KeyedMessage<String, String>> km= any();
//doNothing().when(producer).send(km);
doNothing().when(producer).send(Matchers.<List<KeyedMessage<String, String>>>any());
cbk= new StreamToActionBusCallback(activeActions, streamName, avroProducer,
javaToSiddhiSerializer, javaToAvroSerializer);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testReceive() throws Exception {
StratioStreamingMessage message= StreamsHelper.getSampleMessage();
Event event= javaToSiddhiSerializer.serialize(message);
Event[] inEvents= {event};
Event[] removeEvents= {event};
Exception ex= null;
try {
cbk.receive(123456789L, inEvents, removeEvents);
} catch (Exception e) {ex= e;}
assertNull("Unexpected exception found", ex);
}
}