blob: 62b67d5e37cea22a711f288a83bcf5f8affa700b [file] [log] [blame]
Andrew Brown3f2521a2015-01-17 22:10:15 -08001/*
2 * File name: ClientTest.java
3 *
4 * Purpose: Test Client.java
5 *
6 * © Copyright Intel Corporation. All rights reserved.
7 * Intel Corporation, 2200 Mission College Boulevard,
8 * Santa Clara, CA 95052-8119, USA
9 */
10package com.intel.jndn.utils;
11
12import org.junit.After;
13import org.junit.AfterClass;
14import org.junit.Before;
15import org.junit.BeforeClass;
16import org.junit.Test;
17import static org.junit.Assert.*;
18import com.intel.jndn.mock.MockTransport;
19import net.named_data.jndn.Data;
20import net.named_data.jndn.Face;
21import net.named_data.jndn.Name;
22import net.named_data.jndn.util.Blob;
Andrew Brown7b1daf32015-01-19 16:36:01 -080023import org.apache.logging.log4j.LogManager;
24import org.apache.logging.log4j.Logger;
Andrew Brown3f2521a2015-01-17 22:10:15 -080025
26/**
27 *
28 * @author Andrew Brown <andrew.brown@intel.com>
29 */
30public class ClientTest {
Andrew Brown7b1daf32015-01-19 16:36:01 -080031
32
33 /**
34 * Setup logging
35 */
36 private static final Logger logger = LogManager.getLogger();
Andrew Brown3f2521a2015-01-17 22:10:15 -080037
Andrew Brown7b1daf32015-01-19 16:36:01 -080038 /**
39 * Test retrieving data synchronously
40 */
41 @Test
42 public void testGetSync() {
43 // setup face
44 MockTransport transport = new MockTransport();
45 Face face = new Face(transport, null);
Andrew Brown3f2521a2015-01-17 22:10:15 -080046
Andrew Brown7b1daf32015-01-19 16:36:01 -080047 // setup return data
48 Data response = new Data(new Name("/a/b/c"));
49 response.setContent(new Blob("..."));
50 transport.respondWith(response);
Andrew Brown3f2521a2015-01-17 22:10:15 -080051
Andrew Brown7b1daf32015-01-19 16:36:01 -080052 // retrieve data
53 logger.info("Client expressing interest synchronously: /a/b/c");
54 Client client = new Client();
55 Data data = client.getSync(face, new Name("/a/b/c"));
56 assertEquals(new Blob("...").buf(), data.getContent().buf());
57 }
Andrew Brown3f2521a2015-01-17 22:10:15 -080058
Andrew Brown7b1daf32015-01-19 16:36:01 -080059 /**
60 * Test retrieving data asynchronously
61 *
62 * @throws InterruptedException
63 */
64 @Test
65 public void testGetAsync() throws InterruptedException {
66 // setup face
67 MockTransport transport = new MockTransport();
68 Face face = new Face(transport, null);
Andrew Brown3f2521a2015-01-17 22:10:15 -080069
Andrew Brown7b1daf32015-01-19 16:36:01 -080070 // setup return data
71 Data response = new Data(new Name("/a/b/c"));
72 response.setContent(new Blob("..."));
73 transport.respondWith(response);
Andrew Brown3f2521a2015-01-17 22:10:15 -080074
Andrew Brown7b1daf32015-01-19 16:36:01 -080075 // retrieve data
76 logger.info("Client expressing interest asynchronously: /a/b/c");
77 Client client = new Client();
78 ClientObserver observer = client.get(face, new Name("/a/b/c"));
79
80 // wait
81 while (observer.responses() == 0) {
82 Thread.sleep(10);
83 }
84 Data data = (Data) observer.getFirst().getPacket();
85 assertEquals(new Blob("...").buf(), data.getContent().buf());
86 }
Andrew Brown3f2521a2015-01-17 22:10:15 -080087}