From a0319cb5c48a36953eff33664a429dc1a9c6dbda Mon Sep 17 00:00:00 2001 From: Ryan Bavetta Date: Mon, 28 Mar 2016 12:52:02 -0700 Subject: Adds Soundtrigger Stub HAL Fuzz Test Change-Id: I7035a6332c93f2630b0114dc6930e66f89cc86cd --- .../stubhal/GenericSoundModelTest.java | 101 ++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java index ad02d2b77a99..c0583ceb2fab 100644 --- a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java +++ b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java @@ -18,6 +18,7 @@ package android.hardware.soundtrigger; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; @@ -40,6 +41,7 @@ import java.io.DataOutputStream; import java.net.InetAddress; import java.net.Socket; import java.util.ArrayList; +import java.util.HashSet; import java.util.Random; import java.util.UUID; @@ -53,7 +55,7 @@ public class GenericSoundModelTest extends AndroidTestCase { static final int MSG_GENERIC_TRIGGER = 4; private Random random = new Random(); - private ArrayList loadedModelUuids; + private HashSet loadedModelUuids; private ISoundTriggerService soundTriggerService; private SoundTriggerManager soundTriggerManager; @@ -68,7 +70,7 @@ public class GenericSoundModelTest extends AndroidTestCase { soundTriggerManager = (SoundTriggerManager) context.getSystemService( Context.SOUND_TRIGGER_SERVICE); - loadedModelUuids = new ArrayList(); + loadedModelUuids = new HashSet(); } @Override @@ -170,6 +172,101 @@ public class GenericSoundModelTest extends AndroidTestCase { verify(spyCallback, timeout(100)).onGenericSoundTriggerDetected(any()); } + /** + * Tests a more complicated pattern of loading, unloading, triggering, starting and stopping + * recognition. Intended to find unexpected errors that occur in unexpected states. + */ + @LargeTest + public void testFuzzGenericSoundModel() throws Exception { + int numModels = 2; + + final int STATUS_UNLOADED = 0; + final int STATUS_LOADED = 1; + final int STATUS_STARTED = 2; + + class ModelInfo { + int status; + GenericSoundModel model; + + public ModelInfo(GenericSoundModel model, int status) { + this.status = status; + this.model = model; + } + } + + Random predictableRandom = new Random(100); + + ArrayList modelInfos = new ArrayList(); + for(int i=0; i