Now with two tests.
authorkenstir <kenstir@gmail.com>
Sun, 6 Dec 2015 02:25:12 +0000 (21:25 -0500)
committerkenstir <kenstir@gmail.com>
Sun, 6 Dec 2015 02:25:12 +0000 (21:25 -0500)
Open-ILS/src/Android/core/AndroidManifest.xml
Open-ILS/src/Android/core/src/org/evergreen_ils/views/SimpleTestableActivity.java [new file with mode: 0644]
Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java [deleted file]
Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/VolleyWranglerTest.java [new file with mode: 0644]
Open-ILS/src/Android/cwmars_app/AndroidManifest.xml

index 3331085..0cb6191 100644 (file)
     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>\r
     <uses-permission android:name="android.permission.USE_CREDENTIALS"/>\r
     <application>\r
+        <activity android:name=".views.SimpleTestableActivity">\r
+            <intent-filter>\r
+                <action android:name="android.intent.action.MAIN" />\r
+                <category android:name="android.intent.category.LAUNCHER" />\r
+            </intent-filter>\r
+                </activity>\r
+\r
     </application>\r
 </manifest>\r
diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/views/SimpleTestableActivity.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/views/SimpleTestableActivity.java
new file mode 100644 (file)
index 0000000..6bf1c2c
--- /dev/null
@@ -0,0 +1,17 @@
+package org.evergreen_ils.views;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+/** Simple activity that serves to run tests based on ActivityInstrumentationTestCase2.
+ * The app activities like MainActivity can't be run from there because they forward
+ * to SplashActivity and prompt for auth etc.
+ *
+ * Created by kenstir on 12/5/2015.
+ */
+public class SimpleTestableActivity extends Activity {
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+}
\ No newline at end of file
diff --git a/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java b/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java
deleted file mode 100644 (file)
index a3cc19c..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.evergreen_ils.views;
-
-import android.app.Activity;
-import android.test.ActivityInstrumentationTestCase2;
-import android.util.Log;
-import com.android.volley.Request;
-import com.android.volley.RequestQueue;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
-import com.android.volley.toolbox.StringRequest;
-import org.evergreen_ils.net.VolleyWrangler;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-/**
- * Created by kenstir on 12/5/2015.
- */
-public class MainActivityTest
-        extends ActivityInstrumentationTestCase2<MainActivity> {
-
-    private static final String TAG = MainActivityTest.class.getName();
-    private Activity mActivity;
-    private VolleyWrangler mVolley;
-    private String libraries_directory_url = "https://evergreen-ils.org/directory/libraries.json";
-    private String mStringResponse = null;
-    private String mError = null;
-    private Exception mException = null;
-    private final Lock mLock = new ReentrantLock();
-    private final Condition mFinishedCondition = mLock.newCondition();
-    private long mStartTime;
-
-    public MainActivityTest() {
-        super(MainActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mActivity = getActivity();
-        mVolley = VolleyWrangler.getInstance(mActivity);
-        mStartTime = System.currentTimeMillis();
-    }
-
-    private void signalFinished() {
-        mLock.lock();
-        mFinishedCondition.signal();
-        mLock.unlock();
-    }
-
-    private boolean waitForResponse() throws InterruptedException {
-        mLock.lock();
-        try {
-            return mFinishedCondition.await(1000, TimeUnit.MILLISECONDS);
-        } finally {
-            mLock.unlock();
-        }
-    }
-
-    private void handleResponse(String response) {
-        long duration_ms = System.currentTimeMillis() - mStartTime;
-        Log.d(TAG, "fetch took " + duration_ms + "ms");
-        mStringResponse = response;
-        Log.d(TAG, "response: " + response);
-        signalFinished();
-    }
-
-    public void testVolleyFetch_basic() throws InterruptedException {
-        RequestQueue q = VolleyWrangler.getInstance(mActivity).getRequestQueue();
-        StringRequest request = new StringRequest(Request.Method.GET, libraries_directory_url,
-                new Response.Listener<String>() {
-                    @Override
-                    public void onResponse(String response) {
-                        handleResponse(response);
-                    }
-                },
-                new Response.ErrorListener() {
-                    @Override
-                    public void onErrorResponse(VolleyError error) {
-                        mError = error.getMessage();
-                    }
-                });
-
-        // submit the request and await the response
-        q.add(request);
-        waitForResponse();
-        assertTrue(mStringResponse != null);
-    }
-}
\ No newline at end of file
diff --git a/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/VolleyWranglerTest.java b/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/VolleyWranglerTest.java
new file mode 100644 (file)
index 0000000..c03864d
--- /dev/null
@@ -0,0 +1,126 @@
+package org.evergreen_ils.views;
+
+import android.app.Activity;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+import org.evergreen_ils.net.VolleyWrangler;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Created by kenstir on 12/5/2015.
+ */
+public class VolleyWranglerTest
+        extends ActivityInstrumentationTestCase2<SimpleTestableActivity> {
+
+    private static final String TAG = VolleyWranglerTest.class.getName();
+    private Activity mActivity;
+    private VolleyWrangler mVolley;
+    private Response.ErrorListener mVolleyErrorListener;
+    private Response.Listener<String> mVolleyStringResponseListener;
+    private String mStringResponse = null;
+    private String mError = null;
+    private Exception mException = null;
+    private long mStartTime;
+
+    // this is how we block until all volley requests are finished
+    private int mOutstandingRequests = 0;
+    private final Lock mLock = new ReentrantLock();
+    private final Condition mFinishedCondition = mLock.newCondition();
+
+    public VolleyWranglerTest() {
+        super(SimpleTestableActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        Log.d(TAG, "setUp:start");
+        super.setUp();
+        Log.d(TAG, "setUp:getActivity");
+        mActivity = getActivity();
+        Log.d(TAG, "setUp:volley stuff");
+        mVolley = VolleyWrangler.getInstance(mActivity);
+        mVolleyErrorListener = new Response.ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError error) {
+                long duration_ms = System.currentTimeMillis() - mStartTime;
+                Log.d(TAG, "failure took " + duration_ms + "ms");
+                mError = error.getMessage();
+                finishRequest();
+            }
+        };
+        mVolleyStringResponseListener = new Response.Listener<String>() {
+            @Override
+            public void onResponse(String response) {
+                long duration_ms = System.currentTimeMillis() - mStartTime;
+                Log.d(TAG, "fetch took " + duration_ms + "ms");
+                mStringResponse = response;
+                Log.d(TAG, "response: " + response);
+                finishRequest();
+            }
+        };
+        mStartTime = System.currentTimeMillis();
+        Log.d(TAG, "setUp:end");
+    }
+
+    private void startRequest(Request<?> request) {
+        Log.d(TAG, "start:lock");
+        mLock.lock();
+        ++mOutstandingRequests;
+        Log.d(TAG, "start:outstandingRequests=" + mOutstandingRequests);
+        RequestQueue q = VolleyWrangler.getInstance(mActivity).getRequestQueue();
+        q.add(request);
+        mLock.unlock();
+    }
+
+    private void finishRequest() {
+        Log.d(TAG, "finish:lock");
+        mLock.lock();
+        --mOutstandingRequests;
+        Log.d(TAG, "finish:outstandingRequests=" + mOutstandingRequests);
+        if (mOutstandingRequests == 0)
+            mFinishedCondition.signal();
+        mLock.unlock();
+    }
+
+    private boolean waitForAllResponses() throws InterruptedException {
+        Log.d(TAG, "waitForAllResponses:lock");
+        mLock.lock();
+        try {
+            Log.d(TAG, "waitForAllResponses:await");
+            return mFinishedCondition.await(1000, TimeUnit.MILLISECONDS);
+        } finally {
+            mLock.unlock();
+        }
+    }
+
+    public void testVolleyFetch_basic() throws InterruptedException {
+        String url = "https://evergreen-ils.org/directory/libraries.json";
+        StringRequest request = new StringRequest(Request.Method.GET, url,
+                mVolleyStringResponseListener, mVolleyErrorListener);
+        startRequest(request);
+
+        waitForAllResponses();
+        assertTrue(mStringResponse != null);
+    }
+
+    public void testVolley_json() throws Exception {
+        Log.d(TAG, "testVolley_json:start");
+        String url = "http://bark.cwmars.org/osrf-gateway-v1?service=open-ils.actor&method=opensrf.open-ils.system.ils_version";
+        RequestQueue q = VolleyWrangler.getInstance(mActivity).getRequestQueue();
+        StringRequest request = new StringRequest(Request.Method.GET, url,
+                mVolleyStringResponseListener, mVolleyErrorListener);
+        startRequest(request);
+
+        waitForAllResponses();
+        assertTrue(mStringResponse != null);
+    }
+}
\ No newline at end of file
index 727825e..a7fc2a8 100644 (file)
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name="org.evergreen_ils.views.UnusedPreferenceActivity" >
+        <activity
+                android:name="org.evergreen_ils.views.SimpleTestableActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
         </activity>
 
         <!-- Search -->