From ecb9b67528a94f736b93b14d7465b97ef428d226 Mon Sep 17 00:00:00 2001 From: kenstir Date: Sat, 5 Dec 2015 21:25:12 -0500 Subject: [PATCH] Now with two tests. --- Open-ILS/src/Android/core/AndroidManifest.xml | 7 ++ .../views/SimpleTestableActivity.java | 17 +++ .../org/evergreen_ils/views/MainActivityTest.java | 91 --------------- .../evergreen_ils/views/VolleyWranglerTest.java | 126 +++++++++++++++++++++ .../src/Android/cwmars_app/AndroidManifest.xml | 7 +- 5 files changed, 156 insertions(+), 92 deletions(-) create mode 100644 Open-ILS/src/Android/core/src/org/evergreen_ils/views/SimpleTestableActivity.java delete mode 100644 Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java create mode 100644 Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/VolleyWranglerTest.java diff --git a/Open-ILS/src/Android/core/AndroidManifest.xml b/Open-ILS/src/Android/core/AndroidManifest.xml index 333108579c..0cb6191416 100644 --- a/Open-ILS/src/Android/core/AndroidManifest.xml +++ b/Open-ILS/src/Android/core/AndroidManifest.xml @@ -17,5 +17,12 @@ + + + + + + + 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 index 0000000000..6bf1c2ca4c --- /dev/null +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/views/SimpleTestableActivity.java @@ -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 index a3cc19c24e..0000000000 --- a/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java +++ /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 { - - 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() { - @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 index 0000000000..c03864d3c3 --- /dev/null +++ b/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/VolleyWranglerTest.java @@ -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 { + + private static final String TAG = VolleyWranglerTest.class.getName(); + private Activity mActivity; + private VolleyWrangler mVolley; + private Response.ErrorListener mVolleyErrorListener; + private Response.Listener 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() { + @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 diff --git a/Open-ILS/src/Android/cwmars_app/AndroidManifest.xml b/Open-ILS/src/Android/cwmars_app/AndroidManifest.xml index 727825eab4..a7fc2a8813 100644 --- a/Open-ILS/src/Android/cwmars_app/AndroidManifest.xml +++ b/Open-ILS/src/Android/cwmars_app/AndroidManifest.xml @@ -61,7 +61,12 @@ - + + + + + -- 2.11.0