12ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson/* 22ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Copyright (C) 2011 The Android Open Source Project 32ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * 42ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 52ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * you may not use this file except in compliance with the License. 62ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * You may obtain a copy of the License at 72ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * 82ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * http://www.apache.org/licenses/LICENSE-2.0 92ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * 102ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Unless required by applicable law or agreed to in writing, software 112ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * distributed under the License is distributed on an "AS IS" BASIS, 122ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * See the License for the specific language governing permissions and 142ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * limitations under the License. 152ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson */ 162ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 172ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonpackage com.android.nfc.snep; 182ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 192ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport java.io.IOException; 202ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 212ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport com.android.nfc.snep.SnepClient; 222ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport com.android.nfc.snep.SnepMessage; 232ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport com.android.nfc.snep.SnepServer; 242ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 252ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.nfc.NdefMessage; 262ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.nfc.NdefRecord; 272ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.test.AndroidTestCase; 282ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.util.Log; 292ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 302ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport java.lang.StringBuffer; 312ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 322ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson/** 332ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Tests connectivity to a custom SNEP server, using a physical NFC device. 342ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson */ 352ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonpublic class SnepCustomClientTests extends AndroidTestCase { 362ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson private static final String TAG = "nfcTest"; 372ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 382ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson public void setUp() { 392ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson Log.d(TAG, "Waiting for service to restart..."); 402ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson try { 412ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson Thread.sleep(6000); 422ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } catch (InterruptedException e) {} 432ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson Log.d(TAG, "Running test."); 442ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 452ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 462ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson public void testPutSmall() throws IOException { 472ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson SnepClient client = getSnepClient(); 482ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.connect(); 492ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.put(getSmallNdef()); 502ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.close(); 512ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 522ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 532ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson public void testPutLarge() throws IOException { 542ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson SnepClient client = getSnepClient(); 552ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.connect(); 562ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.put(getLargeNdef()); 572ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.close(); 582ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 592ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 602ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson public void testPutTwice() throws IOException { 612ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson SnepClient client = getSnepClient(); 622ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.connect(); 632ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.put(getSmallNdef()); 642ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.put(getSmallNdef()); 652ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.close(); 662ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 672ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 682ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson public void testGetSmall() throws IOException { 692ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson SnepClient client = getSnepClient(); 702ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson client.connect(); 712ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson SnepMessage response = client.get(getSmallNdef()); 722ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson assertEquals(SnepMessage.RESPONSE_SUCCESS, response.getField()); 732ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 742ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 752ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson private NdefMessage getSmallNdef() { 762ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson NdefRecord rec = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, NdefRecord.RTD_URI, 772ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson new byte[0], "http://android.com".getBytes()); 782ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson return new NdefMessage(new NdefRecord[] { rec }); 792ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 802ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 812ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson private NdefMessage getLargeNdef() { 822ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson int size = 3000; 832ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson StringBuffer string = new StringBuffer(size); 842ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson for (int i = 0; i < size; i++) { 852ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson string.append('A' + (i % 26)); 862ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 872ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson NdefRecord rec = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(), 882ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson new byte[0], string.toString().getBytes()); 892ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson return new NdefMessage(new NdefRecord[] { rec }); 902ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 912ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson 922ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson private SnepClient getSnepClient() { 932ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson return new SnepClient(SnepValidationServerTests.SERVICE_NAME); 942ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson } 952ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson} 96