uds-se / droidmate

DroidMate-2: A Platform for Android Test Generation
http://www.boxmate.org/
GNU General Public License v3.0
28 stars 14 forks source link

NullPointerException in main thread. #10

Closed michael172849 closed 3 years ago

michael172849 commented 4 years ago

I have successfully built and generated the jar file from the source in a docker container. But when I run it with

java -jar build/libs/droidmate-2-2.0.0-all.jar --Output-outputDir=/tmp_out --Selectors-actionLimit=200

I got this exception.

DroidMate, an automated execution generator for Android apps. Copyright (c) 2012 - 2019 Saarland University This program is free software licensed under GNU GPL v3.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

email: jamrozik@st.cs.uni-saarland.de web: www.droidmate.org 20:07:09.848 [main] INFO API-Command - Bootstrapping DroidMate: building ConfigurationWrapper from args and instantiating objects for ExplorationAPI. 20:07:09.850 [main] INFO API-Command - IMPORTANT: for help on how to configure DroidMate, run it with --help 20:07:10.045 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - memoizedBuildConfiguration(args, fileSystem) available build-tools: 27.0.3 28.0.3 26.0.2 max build tools (28.0.3, 2803) available platforms versions: android-27 android-28 android-23 20:07:10.053 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - Using uiautomator2-daemon.apk located at /tmp_out/temp_extracted_resources/deviceControlDaemon.apk 20:07:10.053 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - Using uiautomator2-daemon-test.apk located at /tmp_out/temp_extracted_resources/deviceControlDaemon-test.apk 20:07:10.054 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - Using monitor.apk located at /tmp_out/temp_extracted_resources/monitor.apk 20:07:10.054 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - Using api_policies.txt located at /tmp_out/temp_extracted_resources/api_policies.txt 20:07:10.055 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - Reading APKs from: /home/ST/droidmate/./apks 20:07:10.067 [main] DEBUG org.droidmate.configuration.ConfigurationBuilder - -------------------------------------------------------------------------------- Working dir: /home/ST/droidmate

JVM arguments: []

Configuration dump:

aaptCommand=/android-sdk/build-tools/28.0.3/aapt adbCommand=/android-sdk/platform-tools/adb apiPoliciesFile=/tmp_out/temp_extracted_resources/api_policies.txt apksDirPath=/home/ST/droidmate/./apks cfg=com.natpryce.konfig.Override@7d8995e coveragePortFile= deviceSerialNumber= droidmateOutputDirPath=/tmp_out droidmateOutputReportDirPath=/tmp_out/report fileSystem=sun.nio.fs.LinuxFileSystem@130d63be monitorApk=/tmp_out/temp_extracted_resources/monitor.apk monitorPortFile= reportInputDirPath=/home/ST/droidmate resourceDir=/tmp_out/temp_extracted_resources uiautomator2DaemonApk=/tmp_out/temp_extracted_resources/deviceControlDaemon.apk uiautomator2DaemonTestApk=/tmp_out/temp_extracted_resources/deviceControlDaemon-test.apk

End of configuration dump

20:07:10.085 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.DefaultStrategies$actionBasedTerminate$1@93d935ae. 20:07:10.085 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.DefaultStrategies$resetOnAppCrash$1@dafaf2c4. 20:07:10.085 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.DefaultStrategies$allowPermission$1@baf2c408. 20:07:10.085 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.DefaultStrategies$handleAdvertisment$1@38793dce. 20:07:10.085 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.DefaultStrategies$handleTargetAbsence$1@ced167b4. 20:07:10.085 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.DefaultStrategies$intervalReset$1@eab5a9da. 20:07:10.086 [main] INFO org.droidmate.exploration.strategy.ExplorationStrategyPool - Registering strategy org.droidmate.exploration.strategy.widget.RandomWidget@70f9dba4. 20:07:10.098 [main] INFO org.droidmate.api.ExplorationAPI - EXPLORATION start timestamp: Wed Nov 20 20:07:10 UTC 2019 20:07:10.098 [main] INFO org.droidmate.api.ExplorationAPI - Running in Android org.droidmate.configuration.ConfigurationWrapper@2925bf5b.androidApi compatibility mode (api23+ = version 6.0 or newer). Exception in thread "main" java.lang.NullPointerException at org.droidmate.command.ExploreCommand$cleanOutputDir$2.test(ExploreCommand.kt:162) at org.droidmate.command.ExploreCommand$cleanOutputDir$2.test(ExploreCommand.kt:76) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.Iterator.forEachRemaining(Iterator.java:116) at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.droidmate.command.ExploreCommand.cleanOutputDir(ExploreCommand.kt:165) at org.droidmate.command.ExploreCommand.access$cleanOutputDir(ExploreCommand.kt:76) at org.droidmate.command.ExploreCommand$execute$2.invokeSuspend(ExploreCommand.kt:92) at org.droidmate.command.ExploreCommand$execute$2.invoke(ExploreCommand.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91) at kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:46) at org.droidmate.command.ExploreCommand.execute(ExploreCommand.kt:90) at org.droidmate.api.ExplorationAPI$explore$6.invokeSuspend(ExplorationAPI.kt:183) at org.droidmate.api.ExplorationAPI$explore$6.invoke(ExplorationAPI.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91) at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:186) at org.droidmate.api.ExplorationAPI.explore(ExplorationAPI.kt:168) at org.droidmate.api.ExplorationAPI.explore(ExplorationAPI.kt:199) at org.droidmate.api.ExplorationAPI$explore$4.invokeSuspend(ExplorationAPI.kt:150) at org.droidmate.api.ExplorationAPI$explore$4.invoke(ExplorationAPI.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91) at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:186) at org.droidmate.api.ExplorationAPI.explore(ExplorationAPI.kt:148) at org.droidmate.api.ExplorationAPI.explore$default(ExplorationAPI.kt:147) at org.droidmate.api.ExplorationAPI$main$1.invokeSuspend(ExplorationAPI.kt:76) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233) at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.kt:116) at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:76) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:53) at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) at org.droidmate.api.ExplorationAPI.main(ExplorationAPI.kt:66)

natanieljr commented 4 years ago

Can you try running

./gradlew run --args="--Output-outputDir=/tmp_out --Selectors-actionLimit=200"

to see if the same error appears?

michael172849 commented 4 years ago

I got the same error.

natanieljr commented 4 years ago

I pushed a change to master.

The problem appears to be that DM is looking for the filename of the parent directory to the output.

Since the directory is / it doesn't have a filename.

Plase have a look at the master branch and see if it works for you.

natanieljr commented 3 years ago

Assuming everything is working since there was no feedback after the solution