Search in sources :

Example 1 with BasicClient

use of com.twitter.hbc.httpclient.BasicClient in project textdb by TextDB.

the class TwitterFeedOperatorTest method testWithMockClient.

/**
 * Mock the TwitterConnector class and the BasicClient class inside it to test the TwitterFeedOperator alone.
 * Use the pre-defined queue with a Json formatted tweet to generate a tuple.
 * Check if the tuple is well-formatted.
 */
@Test
public void testWithMockClient() throws Exception {
    TwitterConnector mockTwitterConnector = mock(TwitterConnector.class);
    queue.add(inputStream);
    TwitterFeedSourcePredicate predicate = new TwitterFeedSourcePredicate(1, keywordList, "", null, null, null, null, null);
    TwitterFeedOperator operator = new TwitterFeedOperator(predicate, mockTwitterConnector);
    operator.setTimeout(timeOut);
    BasicClient mockClient = mock(BasicClient.class);
    when(mockTwitterConnector.getClient()).thenReturn(mockClient);
    when(mockTwitterConnector.getMsgQueue()).thenReturn(queue);
    TupleSink tupleSink = new TupleSink();
    tupleSink.setInputOperator(operator);
    tupleSink.open();
    List<Tuple> exactResults = tupleSink.collectAllTuples();
    tupleSink.close();
    JsonNode tweet = new ObjectMapper().readValue(inputStream, JsonNode.class);
    Tuple expectedTuple = new Tuple(TwitterUtils.TwitterSchema.TWITTER_SCHEMA, new TextField(TwitterUtils.getText(tweet)), new StringField(TwitterUtils.getMediaLink(tweet)), new StringField(TwitterUtils.getTweetLink(tweet)), new StringField(TwitterUtils.getUserLink(tweet)), new TextField(TwitterUtils.getUserScreenName(tweet)), new TextField(TwitterUtils.getUserName(tweet)), new TextField(TwitterUtils.getUserDescription(tweet)), new IntegerField(TwitterUtils.getUserFollowerCnt(tweet)), new IntegerField(TwitterUtils.getUserFriendsCnt(tweet)), new TextField(TwitterUtils.getUserLocation(tweet)), new StringField(TwitterUtils.getCreateTime(tweet)), new TextField(TwitterUtils.getPlaceName(tweet)), new StringField(TwitterUtils.getCoordinates(tweet)), new StringField(TwitterUtils.getLanguage(tweet)));
    String exactID = exactResults.get(0).getFields().get(0).getValue().toString();
    String expectedID = exactResults.get(0).getField(SchemaConstants._ID).getValue().toString();
    Assert.assertEquals(exactResults.size(), 1);
    Assert.assertEquals(exactID, expectedID);
    Assert.assertTrue(TwitterFeedTestHelper.compareTuple(exactResults, expectedTuple));
}
Also used : TupleSink(edu.uci.ics.texera.dataflow.sink.tuple.TupleSink) JsonNode(com.fasterxml.jackson.databind.JsonNode) IntegerField(edu.uci.ics.texera.api.field.IntegerField) StringField(edu.uci.ics.texera.api.field.StringField) TextField(edu.uci.ics.texera.api.field.TextField) BasicClient(com.twitter.hbc.httpclient.BasicClient) Tuple(edu.uci.ics.texera.api.tuple.Tuple) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Aggregations

JsonNode (com.fasterxml.jackson.databind.JsonNode)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 BasicClient (com.twitter.hbc.httpclient.BasicClient)1 IntegerField (edu.uci.ics.texera.api.field.IntegerField)1 StringField (edu.uci.ics.texera.api.field.StringField)1 TextField (edu.uci.ics.texera.api.field.TextField)1 Tuple (edu.uci.ics.texera.api.tuple.Tuple)1 TupleSink (edu.uci.ics.texera.dataflow.sink.tuple.TupleSink)1