Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / service / resource-encapsulation / android / service / src / androidTest / java / org / iotivity / service / TestBase.java
1 package org.iotivity.service;
2
3 import org.iotivity.service.client.RcsAddress;
4 import org.iotivity.service.client.RcsDiscoveryManager;
5 import org.iotivity.service.client.RcsDiscoveryManager.OnResourceDiscoveredListener;
6 import org.iotivity.service.client.RcsRemoteResourceObject;
7 import org.iotivity.service.server.RcsResourceObject;
8
9 import android.test.InstrumentationTestCase;
10
11 public abstract class TestBase extends InstrumentationTestCase {
12     protected static final String RESOURCEURI       = "/a/TemperatureSensor";
13     protected static final String RESOURCETYPE      = "oic.r.type";
14     protected static final String RESOURCEINTERFACE = "oic.if.baseline";
15
16     protected static final String   KEY       = "key";
17     protected static final RcsValue VALUE     = new RcsValue(100);
18     protected static final int      RAW_VALUE = 100;
19
20     private final Object mCond = new Object();
21
22     protected RcsResourceObject       mServer;
23     protected RcsRemoteResourceObject mClient;
24
25     private OnResourceDiscoveredListener mOnResourceDiscoveredListener = new OnResourceDiscoveredListener() {
26         @Override
27         public void onResourceDiscovered(
28                 RcsRemoteResourceObject RcsRemoteResourceObject) {
29             if (mClient != null)
30                 return;
31
32             mClient = RcsRemoteResourceObject;
33             synchronized (mCond) {
34                 mCond.notify();
35             }
36         }
37     };
38
39     @Override
40     protected void setUp() throws Exception {
41         super.setUp();
42
43         mServer = new RcsResourceObject.Builder(RESOURCEURI, RESOURCETYPE,
44                 RESOURCEINTERFACE).build();
45         mServer.setAttribute(KEY, VALUE);
46
47         WaitUntilDiscovered();
48
49         assertNotNull(mClient);
50     }
51
52     private void WaitUntilDiscovered() throws RcsException {
53         while (mClient == null) {
54             try {
55                 RcsDiscoveryManager.DiscoveryTask discoveryTask = RcsDiscoveryManager
56                         .getInstance().discoverResourceByType(
57                                 RcsAddress.multicast(), "/oic/res",
58                                 RESOURCETYPE, mOnResourceDiscoveredListener);
59
60                 synchronized (mCond) {
61                     mCond.wait(100);
62                 }
63
64                 discoveryTask.cancel();
65             } catch (InterruptedException e) {
66                 e.printStackTrace();
67             }
68         }
69     }
70
71     protected void setServerAttrbutes(RcsResourceAttributes attrs)
72             throws RcsException {
73         RcsResourceObject.AttributesLock lock = mServer.getAttributesLock();
74         lock.lock().putAll(attrs);
75         lock.apply();
76         lock.unlock();
77     }
78
79     @Override
80     protected void tearDown() throws Exception {
81         super.tearDown();
82
83         mServer.destroy();
84         mClient.destroy();
85     }
86 }