2 *******************************************************************
4 * Copyright 2015 Intel Corporation.
6 *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
20 *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
23 package org.iotivity.base;
25 import android.test.InstrumentationTestCase;
26 import android.util.Log;
28 import java.util.Arrays;
29 import java.util.Date;
30 import java.util.EnumSet;
31 import java.util.HashMap;
32 import java.util.LinkedList;
33 import java.util.List;
35 import java.util.Random;
36 import java.util.Timer;
37 import java.util.TimerTask;
38 import java.util.concurrent.CountDownLatch;
39 import java.util.concurrent.TimeUnit;
41 public class SmokeTest extends InstrumentationTestCase {
42 private static final String TAG = "SmokeTest";
43 private Random rnd = new Random();
46 protected void setUp() throws Exception {
48 PlatformConfig cfg = new PlatformConfig(
49 getInstrumentation().getContext(),
51 ModeType.CLIENT_SERVER,
54 QualityOfService.LOW);
56 OcPlatform.Configure(cfg);
60 protected void tearDown() throws Exception {
64 public void testResourceRegisterUnregister() throws InterruptedException {
65 final String resourceType = "unit.test.resource" +
67 final CountDownLatch signal = new CountDownLatch(1);
69 OcPlatform.EntityHandler entityHandler = new OcPlatform.EntityHandler() {
71 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
72 return EntityHandlerResult.OK;
76 OcPlatform.OnResourceFoundListener resourceFoundListener =
77 new OcPlatform.OnResourceFoundListener() {
79 public void onResourceFound(OcResource resource) {
80 Log.i(TAG, "Host: " + resource.getHost());
81 Log.i(TAG, "Server ID: " + resource.getServerId());
82 Log.i(TAG, "Connectivity Types: ");
83 for (OcConnectivityType connectivityType : resource.getConnectivityTypeSet()) {
84 Log.i(TAG, " " + connectivityType);
90 public void onFindResourceFailed(Throwable ex, String uri) {
91 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
97 OcResourceHandle resourceHandle = OcPlatform.registerResource(
100 OcPlatform.DEFAULT_INTERFACE,
102 EnumSet.of(ResourceProperty.DISCOVERABLE)
106 OcPlatform.findResource("",
107 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
108 EnumSet.of(OcConnectivityType.CT_DEFAULT),
109 resourceFoundListener);
111 //wait for onResourceFound event
112 assertTrue(signal.await(60, TimeUnit.SECONDS));
115 OcPlatform.unregisterResource(resourceHandle);
116 } catch (OcException e) {
117 Log.e(TAG, e.getMessage());
122 public void testStartStopListenForPresence() throws InterruptedException {
123 final String resourceType = "unit.test.resource" +
124 new Date().getTime();
125 final CountDownLatch signal = new CountDownLatch(1);
127 OcPlatform.EntityHandler entityHandler = new OcPlatform.EntityHandler() {
129 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
130 return EntityHandlerResult.OK;
134 final OcPlatform.OnPresenceListener presenceListener = new OcPlatform.OnPresenceListener() {
136 public void onPresence(OcPresenceStatus ocPresenceStatus, int nonce, String hostAddress) {
137 Log.i(TAG, "onPresence status " + ocPresenceStatus.toString() + " nonce " + nonce);
142 OcPlatform.OnResourceFoundListener resourceFoundListener =
143 new OcPlatform.OnResourceFoundListener() {
145 public void onResourceFound(OcResource resource) {
148 OcPresenceHandle presenceHandle = OcPlatform.subscribePresence(
150 EnumSet.of(OcConnectivityType.CT_DEFAULT),
154 //wait for onPresence event
155 assertTrue(signal.await(60, TimeUnit.SECONDS));
158 OcPlatform.unsubscribePresence(presenceHandle);
159 } catch (OcException e) {
161 } catch (InterruptedException e) {
167 public void onFindResourceFailed(Throwable ex, String uri) {
168 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
174 OcResourceHandle resourceHandle = OcPlatform.registerResource(
177 OcPlatform.DEFAULT_INTERFACE,
179 EnumSet.of(ResourceProperty.DISCOVERABLE, ResourceProperty.OBSERVABLE)
183 OcPlatform.findResource("",
184 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
185 EnumSet.of(OcConnectivityType.CT_DEFAULT),
186 resourceFoundListener);
189 OcPlatform.startPresence(OcPlatform.DEFAULT_PRESENCE_TTL);
191 //wait for onPresence event
192 assertTrue(signal.await(60, TimeUnit.SECONDS));
195 OcPlatform.stopPresence();
198 OcPlatform.unregisterResource(resourceHandle);
200 } catch (OcException e) {
201 Log.e(TAG, e.getMessage());
206 public void testHandleGetRequest() throws InterruptedException {
207 final String someKey = "SomeKey";
208 final String someValue = "SomeValue";
209 final String resourceType = "unit.test.resource" + new Date().getTime();
210 final CountDownLatch signal1 = new CountDownLatch(1);
211 final CountDownLatch signal2 = new CountDownLatch(1);
212 final List<OcResource> ocResourceList = new LinkedList<OcResource>();
215 final OcResource.OnGetListener onGetListener = new OcResource.OnGetListener() {
217 public void onGetCompleted(List<OcHeaderOption> headerOptionList, OcRepresentation ocRepresentation) {
218 if (!headerOptionList.isEmpty()) {
219 for (OcHeaderOption headerOption : headerOptionList) {
220 Log.i(TAG, "Header option " +
221 headerOption.getOptionId() +
223 headerOption.getOptionData());
227 Log.i(TAG, "Power: " + ocRepresentation.getValue("power"));
228 } catch (OcException e) {
229 Log.e(TAG, e.toString());
236 public void onGetFailed(Throwable ex) {
237 if (ex instanceof OcException) {
238 OcException ocEx = (OcException) ex;
239 ErrorCode errCode = ocEx.getErrorCode();
240 if (ErrorCode.NO_RESOURCE != errCode) {
241 Log.e(TAG, ocEx.getMessage());
245 Log.e(TAG, ex.getMessage());
252 final OcPlatform.OnResourceFoundListener resourceFoundListener =
253 new OcPlatform.OnResourceFoundListener() {
255 public void onResourceFound(OcResource resource) {
256 Map<String, String> queryParamsMap = new HashMap<String, String>();
257 queryParamsMap.put(someKey, someValue);
259 ocResourceList.add(resource);
261 resource.get(queryParamsMap, onGetListener);
262 // TODO there is a bug in the stack that prevents the usage of the following APIs
263 // resource.get(resourceType, OcPlatform.DEFAULT_INTERFACE, queryParamsMap,
266 // resource.get(queryParamsMap, onGetListener, QualityOfService.LOW);
268 // resource.get(resourceType, OcPlatform.DEFAULT_INTERFACE,queryParamsMap,
269 // onGetListener, QualityOfService.LOW);
270 } catch (OcException e) {
271 Log.e(TAG, e.toString());
278 public void onFindResourceFailed(Throwable ex, String uri) {
279 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
285 OcResourceHandle resourceHandle = OcPlatform.registerResource(
288 OcPlatform.DEFAULT_INTERFACE,
289 new OcPlatform.EntityHandler() {
291 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
292 EnumSet<RequestHandlerFlag> handlerFlagSet =
293 ocResourceRequest.getRequestHandlerFlagSet();
295 RequestType requestType = ocResourceRequest.getRequestType();
297 if (handlerFlagSet.contains(RequestHandlerFlag.INIT)) {
299 if (handlerFlagSet.contains(RequestHandlerFlag.REQUEST)) {
300 OcResourceResponse ocResourceResponse = new OcResourceResponse();
301 ocResourceResponse.setRequestHandle(
302 ocResourceRequest.getRequestHandle());
303 ocResourceResponse.setResourceHandle(
304 ocResourceRequest.getResourceHandle());
306 switch (requestType) {
308 Map<String, String> queryParams =
309 ocResourceRequest.getQueryParameters();
311 if (!(queryParams.containsKey(someKey) &&
312 someValue.equals(queryParams.get(someKey)))) {
316 ocResourceResponse.setErrorCode(200);
317 ocResourceResponse.setResponseResult(EntityHandlerResult.OK);
318 ocResourceResponse.setResourceRepresentation(
319 getRepresentation(74));
324 OcPlatform.sendResponse(ocResourceResponse);
325 } catch (OcException e) {
326 Log.e(TAG, e.getMessage());
327 return EntityHandlerResult.ERROR;
330 if (handlerFlagSet.contains(RequestHandlerFlag.OBSERVER)) {
332 return EntityHandlerResult.OK;
335 EnumSet.of(ResourceProperty.DISCOVERABLE)
339 OcPlatform.findResource(null,
340 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
341 EnumSet.of(OcConnectivityType.CT_DEFAULT),
342 resourceFoundListener);
344 //wait for onResourceFound event
345 assertTrue(signal1.await(60, TimeUnit.SECONDS));
347 //wait for onGetCompleted event
348 assertTrue(signal2.await(60, TimeUnit.SECONDS));
351 OcPlatform.unregisterResource(resourceHandle);
353 } catch (OcException e) {
354 Log.e(TAG, e.getMessage());
359 public void testHandlePutRequest() throws InterruptedException {
360 final String resourceType = "unit.test.resource" + new Date().getTime();
361 final CountDownLatch signal1 = new CountDownLatch(1);
362 final CountDownLatch signal2 = new CountDownLatch(3);
363 final List<OcResource> ocResourceList = new LinkedList<OcResource>();
365 final OcResource.OnPutListener onPutListener = new OcResource.OnPutListener() {
367 public void onPutCompleted(List<OcHeaderOption> headerOptionList, OcRepresentation ocRepresentation) {
368 if (!headerOptionList.isEmpty()) {
369 for (OcHeaderOption headerOption : headerOptionList) {
370 Log.i(TAG, "Header option " +
371 headerOption.getOptionId() +
373 headerOption.getOptionData());
377 Log.i(TAG, "onPutCompleted Power: " + ocRepresentation.getValue("power"));
378 } catch (OcException e) {
379 Log.e(TAG, e.getMessage());
382 Log.i(TAG, "onPutCompleted Uri: " + ocRepresentation.getUri());
387 public void onPutFailed(Throwable ex) {
388 if (ex instanceof OcException) {
389 OcException ocEx = (OcException) ex;
390 ErrorCode errCode = ocEx.getErrorCode();
391 if (ErrorCode.NO_RESOURCE != errCode) {
392 Log.e(TAG, ocEx.getMessage());
396 Log.e(TAG, ex.getMessage());
402 final OcPlatform.OnResourceFoundListener resourceFoundListener =
403 new OcPlatform.OnResourceFoundListener() {
405 public void onResourceFound(OcResource resource) {
406 ocResourceList.add(resource);
410 new HashMap<String, String>(),
415 new HashMap<String, String>(),
420 new HashMap<String, String>(),
421 new OcResource.OnPutListener() {
423 public void onPutCompleted(List<OcHeaderOption> headerOptionList, OcRepresentation ocRepresentation) {
428 public void onPutFailed(Throwable ex) {
429 if (ex instanceof OcException) {
430 OcException ocEx = (OcException) ex;
431 ErrorCode errCode = ocEx.getErrorCode();
432 if (ErrorCode.NO_RESOURCE != errCode) {
433 Log.e(TAG, ocEx.getMessage());
437 Log.e(TAG, ex.getMessage());
443 } catch (OcException e) {
450 public void onFindResourceFailed(Throwable ex, String uri) {
451 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
457 OcResourceHandle resourceHandle = OcPlatform.registerResource(
460 OcPlatform.DEFAULT_INTERFACE,
461 new OcPlatform.EntityHandler() {
463 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
464 EnumSet<RequestHandlerFlag> handlerFlagSet = ocResourceRequest.getRequestHandlerFlagSet();
465 RequestType requestType = ocResourceRequest.getRequestType();
467 if (handlerFlagSet.contains(RequestHandlerFlag.INIT)) {
469 if (handlerFlagSet.contains(RequestHandlerFlag.REQUEST)) {
470 OcResourceResponse ocResourceResponse = new OcResourceResponse();
471 ocResourceResponse.setRequestHandle(
472 ocResourceRequest.getRequestHandle());
473 ocResourceResponse.setResourceHandle(
474 ocResourceRequest.getResourceHandle());
476 switch (requestType) {
481 OcRepresentation rep = ocResourceRequest.getResourceRepresentation();
483 Log.i(TAG, "Put res. power: " + rep.getValue("power"));
484 } catch (OcException e) {
485 Log.e(TAG, e.toString());
488 Log.i(TAG, "URI: " + rep.getUri());
490 ocResourceResponse.setResponseResult(EntityHandlerResult.OK);
491 ocResourceResponse.setErrorCode(200);
492 ocResourceResponse.setResourceRepresentation(rep);
502 OcPlatform.sendResponse(ocResourceResponse);
503 } catch (OcException e) {
504 Log.e(TAG, e.getMessage());
505 return EntityHandlerResult.ERROR;
508 if (handlerFlagSet.contains(RequestHandlerFlag.OBSERVER)) {
510 return EntityHandlerResult.OK;
513 EnumSet.of(ResourceProperty.DISCOVERABLE)
517 OcPlatform.findResource("",
518 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
519 EnumSet.of(OcConnectivityType.CT_DEFAULT),
520 resourceFoundListener);
522 //wait for onResourceFound event
523 assertTrue(signal1.await(60, TimeUnit.SECONDS));
525 //wait for onGetCompleted event
526 assertTrue(signal2.await(60, TimeUnit.SECONDS));
529 OcPlatform.unregisterResource(resourceHandle);
531 } catch (OcException e) {
532 Log.e(TAG, e.getMessage());
537 public void testHandlePostRequest() throws InterruptedException {
538 final String resourceType = "unit.test.resource" + new Date().getTime();
539 final CountDownLatch signal1 = new CountDownLatch(1);
540 final CountDownLatch signal2 = new CountDownLatch(3);
541 final List<OcResource> ocResourceList = new LinkedList<OcResource>();
543 final OcResource.OnPostListener onPostListener = new OcResource.OnPostListener() {
545 public void onPostCompleted(List<OcHeaderOption> headerOptionList, OcRepresentation ocRepresentation) {
546 if (!headerOptionList.isEmpty()) {
547 for (OcHeaderOption headerOption : headerOptionList) {
548 Log.i(TAG, "Header option " +
549 headerOption.getOptionId() +
551 headerOption.getOptionData());
555 Log.i(TAG, "onPostCompleted Power: " + ocRepresentation.getValue("power"));
556 } catch (OcException e) {
557 Log.e(TAG, e.toString());
560 Log.i(TAG, "onPostCompleted Uri: " + ocRepresentation.getUri());
565 public void onPostFailed(Throwable ex) {
566 if (ex instanceof OcException) {
567 OcException ocEx = (OcException) ex;
568 ErrorCode errCode = ocEx.getErrorCode();
569 if (ErrorCode.NO_RESOURCE != errCode) {
570 Log.e(TAG, ocEx.getMessage());
574 Log.e(TAG, ex.getMessage());
580 final OcPlatform.OnResourceFoundListener resourceFoundListener =
581 new OcPlatform.OnResourceFoundListener() {
583 public void onResourceFound(OcResource resource) {
584 ocResourceList.add(resource);
588 new HashMap<String, String>(),
593 new HashMap<String, String>(),
598 new HashMap<String, String>(),
599 new OcResource.OnPostListener() {
601 public void onPostCompleted(List<OcHeaderOption> headerOptionList, OcRepresentation ocRepresentation) {
606 public void onPostFailed(Throwable ex) {
607 if (ex instanceof OcException) {
608 OcException ocEx = (OcException) ex;
609 ErrorCode errCode = ocEx.getErrorCode();
610 if (ErrorCode.NO_RESOURCE != errCode) {
611 Log.e(TAG, ocEx.getMessage());
615 Log.e(TAG, ex.getMessage());
621 } catch (OcException e) {
628 public void onFindResourceFailed(Throwable ex, String uri) {
629 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
635 OcResourceHandle resourceHandle = OcPlatform.registerResource(
638 OcPlatform.DEFAULT_INTERFACE,
639 new OcPlatform.EntityHandler() {
641 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
642 EnumSet<RequestHandlerFlag> handlerFlagSet = ocResourceRequest.getRequestHandlerFlagSet();
643 RequestType requestType = ocResourceRequest.getRequestType();
645 if (handlerFlagSet.contains(RequestHandlerFlag.INIT)) {
647 if (handlerFlagSet.contains(RequestHandlerFlag.REQUEST)) {
648 OcResourceResponse ocResourceResponse = new OcResourceResponse();
649 ocResourceResponse.setRequestHandle(
650 ocResourceRequest.getRequestHandle());
651 ocResourceResponse.setResourceHandle(
652 ocResourceRequest.getResourceHandle());
654 switch (requestType) {
662 OcRepresentation rep = ocResourceRequest.getResourceRepresentation();
664 Log.i(TAG, "Post res. power: " + rep.getValue("power"));
665 } catch (OcException e) {
666 Log.e(TAG, e.toString());
669 Log.i(TAG, "URI: " + rep.getUri());
671 ocResourceResponse.setErrorCode(200);
672 ocResourceResponse.setResponseResult(EntityHandlerResult.OK);
673 ocResourceResponse.setResourceRepresentation(
674 getRepresentation(44));
683 OcPlatform.sendResponse(ocResourceResponse);
684 } catch (OcException e) {
685 Log.e(TAG, e.getMessage());
686 return EntityHandlerResult.ERROR;
689 if (handlerFlagSet.contains(RequestHandlerFlag.OBSERVER)) {
691 return EntityHandlerResult.OK;
694 EnumSet.of(ResourceProperty.DISCOVERABLE)
698 OcPlatform.findResource("",
699 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
700 EnumSet.of(OcConnectivityType.CT_DEFAULT),
701 resourceFoundListener);
703 //wait for onResourceFound event
704 assertTrue(signal1.await(60, TimeUnit.SECONDS));
706 //wait for onPostCompleted event
707 assertTrue(signal2.await(60, TimeUnit.SECONDS));
710 OcPlatform.unregisterResource(resourceHandle);
712 } catch (OcException e) {
713 Log.e(TAG, e.getMessage());
719 public void testHandleDeleteRequest() throws InterruptedException {
720 final String resourceType = "unit.test.resource" + new Date().getTime();
721 final CountDownLatch signal1 = new CountDownLatch(1);
722 final CountDownLatch signal2 = new CountDownLatch(1);
723 final List<OcResource> ocResourceList = new LinkedList<OcResource>();
725 final OcResource.OnDeleteListener onDeleteListener = new OcResource.OnDeleteListener() {
727 public void onDeleteCompleted(List<OcHeaderOption> headerOptionList) {
732 public void onDeleteFailed(Throwable ex) {
733 if (ex instanceof OcException) {
734 OcException ocEx = (OcException) ex;
735 ErrorCode errCode = ocEx.getErrorCode();
736 if (ErrorCode.NO_RESOURCE != errCode) {
737 Log.e(TAG, ocEx.getMessage());
741 Log.e(TAG, ex.getMessage());
747 final OcPlatform.OnResourceFoundListener resourceFoundListener =
748 new OcPlatform.OnResourceFoundListener() {
750 public void onResourceFound(OcResource resource) {
751 ocResourceList.add(resource);
753 resource.deleteResource(onDeleteListener);
754 } catch (OcException e) {
761 public void onFindResourceFailed(Throwable ex, String uri) {
762 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
768 OcResourceHandle resourceHandle = OcPlatform.registerResource(
771 OcPlatform.DEFAULT_INTERFACE,
772 new OcPlatform.EntityHandler() {
774 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
775 EnumSet<RequestHandlerFlag> handlerFlagSet =
776 ocResourceRequest.getRequestHandlerFlagSet();
777 RequestType requestType = ocResourceRequest.getRequestType();
779 if (handlerFlagSet.contains(RequestHandlerFlag.INIT)) {
781 if (handlerFlagSet.contains(RequestHandlerFlag.REQUEST)) {
782 OcResourceResponse ocResourceResponse = new OcResourceResponse();
783 ocResourceResponse.setRequestHandle(
784 ocResourceRequest.getRequestHandle());
785 ocResourceResponse.setResourceHandle(
786 ocResourceRequest.getResourceHandle());
788 switch (requestType) {
790 ocResourceResponse.setErrorCode(200);
791 ocResourceResponse.setResponseResult(
792 EntityHandlerResult.RESOURCE_DELETED);
797 OcPlatform.sendResponse(ocResourceResponse);
798 } catch (OcException e) {
799 Log.e(TAG, e.getMessage());
800 return EntityHandlerResult.ERROR;
803 if (handlerFlagSet.contains(RequestHandlerFlag.OBSERVER)) {
805 return EntityHandlerResult.OK;
808 EnumSet.of(ResourceProperty.DISCOVERABLE)
812 OcPlatform.findResource("",
813 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
814 EnumSet.of(OcConnectivityType.CT_DEFAULT),
815 resourceFoundListener);
817 //wait for onResourceFound event
818 assertTrue(signal1.await(60, TimeUnit.SECONDS));
820 //wait for onDeleteCompleted event
821 assertTrue(signal2.await(60, TimeUnit.SECONDS));
824 OcPlatform.unregisterResource(resourceHandle);
826 } catch (OcException e) {
827 Log.e(TAG, e.getMessage());
832 public void testHandleGetPutPostDeleteFailures() throws InterruptedException {
833 final String resourceType = "unit.test.resource" + new Date().getTime();
834 final CountDownLatch signal1 = new CountDownLatch(1);
835 final CountDownLatch signal2 = new CountDownLatch(1);
836 final CountDownLatch signal3 = new CountDownLatch(1);
837 final CountDownLatch signal4 = new CountDownLatch(1);
838 final CountDownLatch signal5 = new CountDownLatch(1);
840 final List<OcResource> ocResourceList = new LinkedList<OcResource>();
841 final OcResource.OnGetListener onGetListener = new OcResource.OnGetListener() {
843 public void onGetCompleted(List<OcHeaderOption> headerOptionList,
844 OcRepresentation ocRepresentation) {
849 public void onGetFailed(Throwable ex) {
850 if (ex instanceof OcException) {
851 OcException ocEx = (OcException) ex;
852 ErrorCode errCode = ocEx.getErrorCode();
854 Log.i(TAG, ex.toString());
859 final OcResource.OnPutListener onPutListener = new OcResource.OnPutListener() {
861 public void onPutCompleted(List<OcHeaderOption> headerOptionList,
862 OcRepresentation ocRepresentation) {
867 public void onPutFailed(Throwable ex) {
868 if (ex instanceof OcException) {
869 OcException ocEx = (OcException) ex;
870 ErrorCode errCode = ocEx.getErrorCode();
872 Log.i(TAG, ex.toString());
876 final OcResource.OnPostListener onPostListener = new OcResource.OnPostListener() {
878 public void onPostCompleted(List<OcHeaderOption> headerOptionList,
879 OcRepresentation ocRepresentation) {
884 public void onPostFailed(Throwable ex) {
885 if (ex instanceof OcException) {
886 OcException ocEx = (OcException) ex;
887 ErrorCode errCode = ocEx.getErrorCode();
889 Log.i(TAG, ex.toString());
894 final OcResource.OnDeleteListener onDeleteListener = new OcResource.OnDeleteListener() {
896 public void onDeleteCompleted(List<OcHeaderOption> headerOptionList) {
901 public void onDeleteFailed(Throwable ex) {
902 if (ex instanceof OcException) {
903 OcException ocEx = (OcException) ex;
904 ErrorCode errCode = ocEx.getErrorCode();
906 Log.i(TAG, ex.toString());
911 final OcPlatform.OnResourceFoundListener resourceFoundListener =
912 new OcPlatform.OnResourceFoundListener() {
914 public void onResourceFound(OcResource resource) {
915 ocResourceList.add(resource);
917 resource.get(new HashMap<String, String>(), onGetListener);
918 resource.put(new OcRepresentation(), new HashMap<String, String>(),
920 resource.post(new OcRepresentation(), new HashMap<String, String>(),
922 resource.deleteResource(onDeleteListener);
923 } catch (OcException e) {
930 public void onFindResourceFailed(Throwable ex, String uri) {
931 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
937 OcResourceHandle resourceHandle = OcPlatform.registerResource(
940 OcPlatform.DEFAULT_INTERFACE,
941 new OcPlatform.EntityHandler() {
943 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
944 EnumSet<RequestHandlerFlag> handlerFlagSet =
945 ocResourceRequest.getRequestHandlerFlagSet();
946 RequestType requestType = ocResourceRequest.getRequestType();
948 if (handlerFlagSet.contains(RequestHandlerFlag.INIT)) {
950 if (handlerFlagSet.contains(RequestHandlerFlag.REQUEST)) {
951 OcResourceResponse ocResourceResponse = new OcResourceResponse();
952 ocResourceResponse.setRequestHandle(
953 ocResourceRequest.getRequestHandle());
954 ocResourceResponse.setResourceHandle(
955 ocResourceRequest.getResourceHandle());
957 switch (requestType) {
959 ocResourceResponse.setErrorCode(200);
960 ocResourceResponse.setResponseResult(
961 EntityHandlerResult.ERROR);
964 ocResourceResponse.setErrorCode(200);
965 ocResourceResponse.setResponseResult(
966 EntityHandlerResult.ERROR);
969 ocResourceResponse.setErrorCode(200);
970 ocResourceResponse.setResponseResult(
971 EntityHandlerResult.ERROR);
974 ocResourceResponse.setErrorCode(200);
975 ocResourceResponse.setResponseResult(
976 EntityHandlerResult.ERROR);
980 OcPlatform.sendResponse(ocResourceResponse);
981 } catch (OcException e) {
982 Log.e(TAG, e.getMessage());
983 return EntityHandlerResult.ERROR;
986 if (handlerFlagSet.contains(RequestHandlerFlag.OBSERVER)) {
988 return EntityHandlerResult.OK;
991 EnumSet.of(ResourceProperty.DISCOVERABLE)
995 OcPlatform.findResource("",
996 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
997 EnumSet.of(OcConnectivityType.CT_DEFAULT),
998 resourceFoundListener);
1000 //wait for onResourceFound event
1001 assertTrue(signal1.await(60, TimeUnit.SECONDS));
1002 //wait for onGetCompleted event
1003 assertTrue(signal2.await(60, TimeUnit.SECONDS));
1004 //wait for onPutCompleted event
1005 assertTrue(signal3.await(60, TimeUnit.SECONDS));
1006 //wait for onPostCompleted event
1007 assertTrue(signal4.await(60, TimeUnit.SECONDS));
1008 //wait for onDeleteCompleted event
1009 assertTrue(signal5.await(60, TimeUnit.SECONDS));
1012 OcPlatform.unregisterResource(resourceHandle);
1014 } catch (OcException e) {
1015 Log.e(TAG, e.getMessage());
1020 public void testPlatformInfo() throws InterruptedException {
1021 final String resourceType = "unit.test.resource" + new Date().getTime();
1022 final CountDownLatch signal = new CountDownLatch(1);
1024 OcPlatform.OnPlatformFoundListener platformFoundListener = new OcPlatform.OnPlatformFoundListener() {
1026 public void onPlatformFound(OcRepresentation ocRepresentation) {
1027 Log.i(TAG, "Platform Info Received: ");
1028 Log.i(TAG, "URI: " + ocRepresentation.getUri());
1033 OcPlatformInfo platformInfo = null;
1035 platformInfo = new OcPlatformInfo("myPlatformID", "myManuName", "myManuUrl");
1037 platformInfo.setModelNumber("myModelNumber");
1038 platformInfo.setDateOfManufacture("myDateOfManufacture");
1039 platformInfo.setPlatformVersion("myPlatformVersion");
1040 platformInfo.setOperatingSystemVersion("myOperatingSystemVersion");
1041 platformInfo.setHardwareVersion("myHardwareVersion");
1042 platformInfo.setFirmwareVersion("myFirmwareVersion");
1043 platformInfo.setSupportUrl("mySupportUrl");
1044 platformInfo.setSystemTime("mySystemTime");
1048 OcPlatform.registerPlatformInfo(platformInfo);
1051 OcPlatform.getPlatformInfo(
1053 OcPlatform.WELL_KNOWN_PLATFORM_QUERY,
1054 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1055 platformFoundListener);
1057 //wait for onPlatformFound event
1058 assertTrue(signal.await(60, TimeUnit.SECONDS));
1059 } catch (OcException e) {
1060 Log.e(TAG, e.getMessage() + platformInfo.toString());
1065 public void testRegisterDeviceInfoGetDeviceInfo() throws InterruptedException {
1066 final String resourceType = "unit.test.resource" + new Date().getTime();
1067 final CountDownLatch signal = new CountDownLatch(1);
1069 OcPlatform.OnDeviceFoundListener deviceFoundListener = new OcPlatform.OnDeviceFoundListener() {
1071 public void onDeviceFound(OcRepresentation ocRepresentation) {
1073 Log.i(TAG, "Device Name: " + ocRepresentation.getValue("n"));
1074 } catch (OcException e) {
1075 Log.e(TAG, e.toString());
1078 boolean hasDeviceNameAtr = ocRepresentation.hasAttribute("n");
1079 assertTrue(hasDeviceNameAtr);
1080 boolean hasNonExistingAtr = ocRepresentation.hasAttribute("NonExisting");
1081 assertFalse(hasNonExistingAtr);
1082 Log.i(TAG, "URI: " + ocRepresentation.getUri());
1087 OcDeviceInfo devInfo = new OcDeviceInfo(
1089 Arrays.asList(new String[]{"oic.d.test"})
1094 OcPlatform.registerDeviceInfo(devInfo);
1096 OcPlatform.getDeviceInfo(
1098 OcPlatform.WELL_KNOWN_DEVICE_QUERY,
1099 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1100 deviceFoundListener);
1102 //wait for onDeviceFound event
1103 assertTrue(signal.await(60, TimeUnit.SECONDS));
1105 } catch (OcException e) {
1106 Log.e(TAG, e.getMessage());
1111 public void testBindUnbindResources() throws InterruptedException {
1112 final String resourceType = "unit.test.resource" + new Date().getTime();
1113 final CountDownLatch signal1 = new CountDownLatch(3);
1114 final CountDownLatch signal2 = new CountDownLatch(2);
1115 final CountDownLatch signal3 = new CountDownLatch(1);
1116 final CountDownLatch signal4 = new CountDownLatch(3);
1117 final CountDownLatch signal5 = new CountDownLatch(3);
1118 final CountDownLatch signal6 = new CountDownLatch(1);
1120 OcPlatform.EntityHandler entityHandler = new OcPlatform.EntityHandler() {
1122 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
1123 return EntityHandlerResult.OK;
1127 OcPlatform.OnResourceFoundListener resourceFoundListener1 = new OcPlatform.OnResourceFoundListener() {
1129 public void onResourceFound(OcResource resource) {
1130 signal1.countDown();
1134 public void onFindResourceFailed(Throwable ex, String uri) {
1135 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1139 OcPlatform.OnResourceFoundListener resourceFoundListener2 = new OcPlatform.OnResourceFoundListener() {
1141 public void onResourceFound(OcResource resource) {
1142 signal2.countDown();
1146 public void onFindResourceFailed(Throwable ex, String uri) {
1147 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1151 OcPlatform.OnResourceFoundListener resourceFoundListener3 = new OcPlatform.OnResourceFoundListener() {
1153 public void onResourceFound(OcResource resource) {
1154 signal3.countDown();
1158 public void onFindResourceFailed(Throwable ex, String uri) {
1159 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1163 OcPlatform.OnResourceFoundListener resourceFoundListener4 = new OcPlatform.OnResourceFoundListener() {
1165 public void onResourceFound(OcResource resource) {
1166 signal4.countDown();
1170 public void onFindResourceFailed(Throwable ex, String uri) {
1171 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1175 OcPlatform.OnResourceFoundListener resourceFoundListener5 = new OcPlatform.OnResourceFoundListener() {
1177 public void onResourceFound(OcResource resource) {
1178 signal5.countDown();
1182 public void onFindResourceFailed(Throwable ex, String uri) {
1183 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1187 OcPlatform.OnResourceFoundListener resourceFoundListener6 = new OcPlatform.OnResourceFoundListener() {
1189 public void onResourceFound(OcResource resource) {
1190 signal6.countDown();
1194 public void onFindResourceFailed(Throwable ex, String uri) {
1195 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1202 OcResourceHandle resourceHandleCollection = OcPlatform.registerResource(
1205 OcPlatform.DEFAULT_INTERFACE,
1207 EnumSet.of(ResourceProperty.DISCOVERABLE)
1210 OcResourceHandle resourceHandle1 = OcPlatform.registerResource(
1213 OcPlatform.DEFAULT_INTERFACE,
1215 EnumSet.of(ResourceProperty.DISCOVERABLE)
1218 OcResourceHandle resourceHandle2 = OcPlatform.registerResource(
1221 OcPlatform.DEFAULT_INTERFACE,
1223 EnumSet.of(ResourceProperty.DISCOVERABLE)
1227 OcPlatform.findResource("",
1228 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1229 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1230 resourceFoundListener1);
1232 //wait for onResourceFound event to find 3 registered resources
1233 assertTrue(signal1.await(60, TimeUnit.SECONDS));
1236 OcPlatform.bindResource(resourceHandleCollection, resourceHandle1);
1237 OcPlatform.bindResource(resourceHandleCollection, resourceHandle2);
1240 OcPlatform.findResource("",
1241 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1242 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1243 resourceFoundListener3);
1245 //wait for onResourceFound event to find 1 collection resources
1246 assertTrue(signal3.await(60, TimeUnit.SECONDS));
1249 OcPlatform.unbindResource(resourceHandleCollection, resourceHandle1);
1252 OcPlatform.findResource("",
1253 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1254 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1255 resourceFoundListener2);
1257 //wait for onResourceFound event to find 2 resources
1258 assertTrue(signal2.await(60, TimeUnit.SECONDS));
1261 OcPlatform.unbindResource(resourceHandleCollection, resourceHandle2);
1264 OcPlatform.findResource("",
1265 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1266 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1267 resourceFoundListener4);
1269 //wait for onResourceFound event to find 3 registered resources
1270 assertTrue(signal4.await(60, TimeUnit.SECONDS));
1272 //Bind/unbind a list of resource handles
1273 List<OcResourceHandle> resourceHandleList = new LinkedList<OcResourceHandle>();
1274 resourceHandleList.add(resourceHandle1);
1275 resourceHandleList.add(resourceHandle2);
1276 OcPlatform.bindResources(resourceHandleCollection, resourceHandleList);
1279 OcPlatform.findResource("",
1280 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1281 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1282 resourceFoundListener6);
1284 //wait for onResourceFound event to find 1 collection resources
1285 assertTrue(signal6.await(60, TimeUnit.SECONDS));
1287 OcPlatform.unbindResources(resourceHandleCollection, resourceHandleList);
1290 OcPlatform.findResource("",
1291 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1292 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1293 resourceFoundListener5);
1295 //wait for onResourceFound event to find 1 collection resources
1296 assertTrue(signal5.await(60, TimeUnit.SECONDS));
1299 OcPlatform.unregisterResource(resourceHandleCollection);
1300 OcPlatform.unregisterResource(resourceHandle1);
1301 OcPlatform.unregisterResource(resourceHandle2);
1302 } catch (OcException e) {
1303 Log.e(TAG, e.getMessage());
1308 public void testResourceMethods() throws InterruptedException {
1309 final String resourceType1 = "unit.test.resource" + new Date().getTime();
1310 final String resourceType2 = "unit.test.resource" + new Date().getTime();
1312 final CountDownLatch signal = new CountDownLatch(2);
1313 final List<OcResource> resourceList = new LinkedList<>();
1315 OcPlatform.OnResourceFoundListener resourceFoundListener =
1316 new OcPlatform.OnResourceFoundListener() {
1318 public synchronized void onResourceFound(OcResource resource) {
1319 resourceList.add(resource);
1320 Log.i(TAG, "Host: " + resource.getHost());
1321 Log.i(TAG, "Uri: " + resource.getUri());
1322 Log.i(TAG, "Observable: " + resource.isObservable());
1324 assertFalse(resource.getResourceTypes().isEmpty());
1325 for (String resourceType : resource.getResourceTypes()) {
1326 Log.i(TAG, "Type: " + resourceType);
1329 assertFalse(resource.getResourceTypes().isEmpty());
1330 for (String resourceInterface : resource.getResourceInterfaces()) {
1331 Log.i(TAG, "Interface: " + resourceInterface);
1334 List<OcHeaderOption> headerOptionList = new LinkedList<OcHeaderOption>();
1335 headerOptionList.add(new OcHeaderOption(2885, "OptionData1"));
1336 headerOptionList.add(new OcHeaderOption(2886, "OptionData2"));
1339 resource.setHeaderOptions(headerOptionList);
1340 } catch (OcException e) {
1341 Log.e(TAG, "onResourceFound, error in setHeaderOptions -- " + e.getMessage());
1344 resource.unsetHeaderOptions();
1346 OcResourceIdentifier resourceIdentifier = resource.getUniqueIdentifier();
1347 OcResourceIdentifier resourceIdentifier2 = resource.getUniqueIdentifier();
1348 assertTrue(resourceIdentifier.equals(resourceIdentifier2));
1354 public void onFindResourceFailed(Throwable ex, String uri) {
1355 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1361 OcResourceHandle resourceHandle1 = OcPlatform.registerResource(
1364 OcPlatform.DEFAULT_INTERFACE,
1366 EnumSet.of(ResourceProperty.DISCOVERABLE)
1369 OcResourceHandle resourceHandle2 = OcPlatform.registerResource(
1372 OcPlatform.DEFAULT_INTERFACE,
1374 EnumSet.of(ResourceProperty.DISCOVERABLE)
1378 OcPlatform.findResource("",
1379 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType1,
1380 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1381 resourceFoundListener);
1383 OcPlatform.findResource("",
1384 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType2,
1385 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1386 resourceFoundListener);
1388 //wait for onResourceFound event
1389 assertTrue(signal.await(60, TimeUnit.SECONDS));
1391 assertTrue(2 == resourceList.size());
1393 OcResource res0 = resourceList.get(0);
1394 OcResource res1 = resourceList.get(1);
1395 assertFalse(res0.getUniqueIdentifier().equals(res1.getUniqueIdentifier()));
1396 assertTrue(res0.getUniqueIdentifier().equals(res0.getUniqueIdentifier()));
1399 OcPlatform.unregisterResource(resourceHandle1);
1400 OcPlatform.unregisterResource(resourceHandle2);
1402 } catch (OcException e) {
1403 Log.e(TAG, e.getMessage());
1408 public void testCreateResourceProxy() throws InterruptedException {
1409 final String resourceType = "unit.test.resource" + new Date().getTime();
1410 final CountDownLatch signal = new CountDownLatch(1);
1412 OcPlatform.OnResourceFoundListener resourceFoundListener =
1413 new OcPlatform.OnResourceFoundListener() {
1415 public void onResourceFound(OcResource resource) {
1418 //client: construct resource proxy
1419 OcResource resourceProxy = OcPlatform.constructResourceObject(
1422 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1423 resource.isObservable(),
1424 resource.getResourceTypes(),
1425 resource.getResourceInterfaces());
1427 //client: register resource proxy
1428 OcResourceHandle resourceProxyHandle =
1429 OcPlatform.registerResource(resourceProxy);
1431 OcPlatform.unregisterResource(resourceProxyHandle);
1432 } catch (OcException e) {
1439 public void onFindResourceFailed(Throwable ex, String uri) {
1440 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1446 OcResourceHandle resourceHandle = OcPlatform.registerResource(
1449 OcPlatform.DEFAULT_INTERFACE,
1451 EnumSet.of(ResourceProperty.DISCOVERABLE)
1455 OcPlatform.findResource("",
1456 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1457 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1458 resourceFoundListener);
1460 //wait for onResourceFound event
1461 assertTrue(signal.await(60, TimeUnit.SECONDS));
1464 OcPlatform.unregisterResource(resourceHandle);
1466 } catch (OcException e) {
1467 Log.e(TAG, e.getMessage());
1473 OcResourceHandle resourceHandle = OcPlatform.registerResource(
1476 OcPlatform.DEFAULT_INTERFACE,
1478 EnumSet.of(ResourceProperty.DISCOVERABLE)
1482 OcPlatform.findResource("",
1483 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1484 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1485 resourceFoundListener);
1487 //wait for onResourceFound event
1488 assertTrue(signal.await(60, TimeUnit.SECONDS));
1491 OcPlatform.unregisterResource(resourceHandle);
1493 } catch (OcException e) {
1494 Log.e(TAG, e.getMessage());
1499 public void testObserveClientServer() throws InterruptedException {
1500 final int NUM_OBSERVES = 20;
1501 final Timer timer = new Timer();
1502 final List<OcResource> resourceList = new LinkedList<OcResource>();
1503 final List<OcResourceHandle> resourceHandleList = new LinkedList<OcResourceHandle>();
1504 final CountDownLatch signal1 = new CountDownLatch(1);
1505 final CountDownLatch signal2 = new CountDownLatch(NUM_OBSERVES);
1506 final CountDownLatch signal3 = new CountDownLatch(1);
1508 final String resourceType = "unit.test.resource" + new Date().getTime();
1510 final OcResource.OnObserveListener observeListener = new OcResource.OnObserveListener() {
1512 public void onObserveCompleted(
1513 List<OcHeaderOption> headerOptionList,
1514 OcRepresentation ocRepresentation,
1515 int sequenceNumber) {
1518 Log.i(TAG, "Observe #" + sequenceNumber + " power: " +
1519 ocRepresentation.getValue("power"));
1520 } catch (OcException e) {
1521 Log.e(TAG, e.toString());
1524 signal2.countDown();
1528 public void onObserveFailed(Throwable ex) {
1529 if (ex instanceof OcException) {
1530 OcException ocEx = (OcException) ex;
1531 ErrorCode errCode = ocEx.getErrorCode();
1533 Log.e(TAG, ex.toString());
1538 final List<Byte> observationIdList = new LinkedList<Byte>();
1539 OcPlatform.EntityHandler entityHandler = new OcPlatform.EntityHandler() {
1541 public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
1542 EnumSet<RequestHandlerFlag> handlerFlagSet = ocResourceRequest.getRequestHandlerFlagSet();
1543 RequestType requestType = ocResourceRequest.getRequestType();
1545 if (handlerFlagSet.contains(RequestHandlerFlag.INIT)) {
1548 if (handlerFlagSet.contains(RequestHandlerFlag.REQUEST)) {
1549 OcResourceResponse ocResourceResponse = new OcResourceResponse();
1550 ocResourceResponse.setRequestHandle(ocResourceRequest.getRequestHandle());
1551 ocResourceResponse.setResourceHandle(ocResourceRequest.getResourceHandle());
1553 switch (requestType) {
1555 ocResourceResponse.setErrorCode(200);
1556 ocResourceResponse.setResponseResult(EntityHandlerResult.OK);
1557 ocResourceResponse.setResourceRepresentation(
1561 OcPlatform.sendResponse(ocResourceResponse);
1562 } catch (OcException e) {
1563 Log.e(TAG, e.getMessage());
1564 return EntityHandlerResult.ERROR;
1570 if (handlerFlagSet.contains(RequestHandlerFlag.OBSERVER)) {
1571 ObservationInfo observationInfo = ocResourceRequest.getObservationInfo();
1573 switch (observationInfo.getObserveAction()) {
1575 synchronized (observationIdList) {
1576 observationIdList.add(observationInfo.getOcObservationId());
1577 timer.schedule(new TimerTask() {
1578 int numNotified = 1;
1582 if (0 < resourceHandleList.size()) {
1583 synchronized (observationIdList) {
1584 if (numNotified > NUM_OBSERVES) {
1587 signal3.countDown();
1590 OcPlatform.notifyAllObservers(
1591 resourceHandleList.get(0));
1592 } catch (OcException e) {
1593 if (ErrorCode.NO_OBSERVERS == e.getErrorCode()) {
1596 signal3.countDown();
1598 Log.e(TAG, e.getMessage());
1610 //TODO unregister isn't implemented in C++ API, yet
1611 synchronized (observationIdList) {
1617 return EntityHandlerResult.OK;
1621 OcPlatform.OnResourceFoundListener resourceFoundListener =
1622 new OcPlatform.OnResourceFoundListener() {
1624 public void onResourceFound(OcResource resource) {
1625 resourceList.add(resource);
1626 if (resource.isObservable()) {
1629 ObserveType.OBSERVE,
1630 new HashMap<String, String>(),
1633 signal1.countDown();
1634 } catch (OcException e) {
1635 Log.e(TAG, e.getMessage());
1642 public void onFindResourceFailed(Throwable ex, String uri) {
1643 Log.i(TAG, "Find Resource Failed for Uri: " + uri + " Error: " + ex.getMessage());
1648 OcResourceHandle resourceHandle = OcPlatform.registerResource(
1651 OcPlatform.DEFAULT_INTERFACE,
1653 EnumSet.of(ResourceProperty.DISCOVERABLE, ResourceProperty.OBSERVABLE)
1656 resourceHandleList.add(resourceHandle);
1659 OcPlatform.findResource("",
1660 OcPlatform.WELL_KNOWN_QUERY + "?rt=" + resourceType,
1661 EnumSet.of(OcConnectivityType.CT_DEFAULT),
1662 resourceFoundListener);
1664 //wait for onResourceFound event
1665 assertTrue(signal1.await(60, TimeUnit.SECONDS));
1667 //wait for OnObserveListener event to observe 20 values
1668 assertTrue(signal2.await(60, TimeUnit.SECONDS));
1670 if (resourceList.size() > 0) {
1671 OcResource resource = resourceList.get(0);
1672 if (resource.isObservable()) {
1673 resource.cancelObserve();
1677 //wait for server to finish
1678 assertTrue(signal3.await(60, TimeUnit.SECONDS));
1681 OcPlatform.unregisterResource(resourceHandle);
1683 } catch (OcException e) {
1684 Log.e(TAG, e.getMessage());
1689 private OcRepresentation getRepresentation(int value) {
1690 OcRepresentation rep = new OcRepresentation();
1692 rep.setValue("power", value);
1693 } catch (OcException e) {
1694 Log.e(TAG, e.toString());
1700 private OcRepresentation getRepresentation() {
1701 return getRepresentation(74);