diff --git a/APhotoManager/configuration-#116.json b/APhotoManager/configuration-#116.json new file mode 100644 index 0000000..bcccf3c --- /dev/null +++ b/APhotoManager/configuration-#116.json @@ -0,0 +1,15 @@ +{ + "app_name": "APhotoManager", + "bug_id": "#116", + "events": { + "1": { + "info": "Clicked the \"Setting\" in the options.", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/ActivityDiary/configuration-#118.json b/ActivityDiary/configuration-#118.json new file mode 100644 index 0000000..a411fd8 --- /dev/null +++ b/ActivityDiary/configuration-#118.json @@ -0,0 +1,45 @@ +{ + "app_name": "ActivityDairy", + "bug_id": "#118", + "events": { + "1": { + "info": "Clicked an item in MainActivity.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the fabAttachPicture.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Get a picture.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Open the drawer.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Clicked the \"Dairy\" in the drawer.", + "reason": null, + "dependency": "4" + }, + "6": { + "info": "Long clicked an image in an activity entry.", + "reason": null, + "dependency": "5" + }, + "7": { + "info": "Deleted an image in an activity entry.", + "reason": null, + "dependency": "6" + } + }, + "warnings": { + "7": "Canceled to delete the image in an activity entry." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/ActivityDiary/configuration-#285.json b/ActivityDiary/configuration-#285.json new file mode 100644 index 0000000..e2186ba --- /dev/null +++ b/ActivityDiary/configuration-#285.json @@ -0,0 +1,30 @@ +{ + "app_name": "ActivityDairy", + "bug_id": "#285", + "events": { + "1": { + "info": "Opened the drawer.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Setting\" in the drawer.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Changed \"Location Service\" to Network or GPS in \"Setting\".", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Changed \"Update period\" to a unique character in \"Setting\".", + "reason": "Can't input unique characters like \"$\".", + "dependency": "2" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/AmazeFileManager/configuration-#1232.json b/AmazeFileManager/configuration-#1232.json new file mode 100644 index 0000000..d05ad62 --- /dev/null +++ b/AmazeFileManager/configuration-#1232.json @@ -0,0 +1,30 @@ +{ + "app_name": "AmazeFileManager", + "bug_id": "#1232", + "steps": { + "1": { + "info": "Copied a internal file / files.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Opened the left drawer.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Clicked the second item in the drawer.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Pasted the copied file/files.", + "reason": null, + "dependency": "3" + } + }, + "warnings" : { + + }, + "all_steps_reached": "Should copy internal files to external storage." +} \ No newline at end of file diff --git a/AmazeFileManager/configuration-#1796.json b/AmazeFileManager/configuration-#1796.json new file mode 100644 index 0000000..4a203c1 --- /dev/null +++ b/AmazeFileManager/configuration-#1796.json @@ -0,0 +1,20 @@ +{ + "app_name": "AmazeFileManager", + "bug_id": "#1796", + "events": { + "1": { + "info": "Cut/copy a folder or folders in the list.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Paste the cut/copied folder or folders.", + "reason": null, + "dependency": "1" + } + }, + "warnings" : { + + }, + "all_events_happened": "Should cut/copy only one folder into itself." +} \ No newline at end of file diff --git a/AmazeFileManager/configuration-#1837.json b/AmazeFileManager/configuration-#1837.json new file mode 100644 index 0000000..413add9 --- /dev/null +++ b/AmazeFileManager/configuration-#1837.json @@ -0,0 +1,20 @@ +{ + "app_name": "AmazeFileManager", + "bug_id": "#1837", + "events": { + "1": { + "info": "Clicked \"Search\" button on the tool bar.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Search a string.", + "reason": null, + "dependency": "1" + } + }, + "warnings" : { + + }, + "all_events_happened": "No multiple files are searched." +} \ No newline at end of file diff --git a/AnkiDroid/configuration-#4200.json b/AnkiDroid/configuration-#4200.json new file mode 100644 index 0000000..1bad3e1 --- /dev/null +++ b/AnkiDroid/configuration-#4200.json @@ -0,0 +1,30 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#4200", + "events": { + "1": { + "info": "Selected a decker.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Pressed \"Edit note\" button.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Make any change in text editor.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Pressed \"Save note\" button in NoteEditor.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + + }, + "all_events_happened": "\"Don't keep activities\" options in developer mode haven't been enabled or text keep the same after change." +} \ No newline at end of file diff --git a/AnkiDroid/configuration-#4451.json b/AnkiDroid/configuration-#4451.json new file mode 100644 index 0000000..75872ff --- /dev/null +++ b/AnkiDroid/configuration-#4451.json @@ -0,0 +1,36 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#4451", + "events": { + "1": { + "info": "Clicked \"Gestures\" item in Preferences.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Enabled gestures.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked \"Reviewing\" item in Preferences.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Set \"Fullscreen mode\" mode in Fullscreen Mode.", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Select any Decker.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + "2": "Disable gestures.", + "4": "Canceled \"Fullscreen mode\" mode in Fullscreen Mode." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/AnkiDroid/configuration-#4707.json b/AnkiDroid/configuration-#4707.json new file mode 100644 index 0000000..db7f16d --- /dev/null +++ b/AnkiDroid/configuration-#4707.json @@ -0,0 +1,30 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#4707", + "events": { + "1": { + "info": "Clicked \"Add\" button in the fab.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Media\" button.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked \"Add image\" button.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Clicked \"Camera\" button.", + "reason": null, + "dependency": "3" + } + }, + "warnings" : { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/AnkiDroid/configuration-#4977.json b/AnkiDroid/configuration-#4977.json new file mode 100644 index 0000000..43bc99e --- /dev/null +++ b/AnkiDroid/configuration-#4977.json @@ -0,0 +1,20 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#4977", + "events": { + "1": { + "info": "Clicked \"Get shared decks\" button in fab.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Card browser\" in the drawer.", + "reason": "Can't open drawer.", + "dependency": null + } + }, + "warnings" : { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/AnkiDroid/configuration-#5638.json b/AnkiDroid/configuration-#5638.json new file mode 100644 index 0000000..c2f02b4 --- /dev/null +++ b/AnkiDroid/configuration-#5638.json @@ -0,0 +1,20 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#5638", + "events": { + "1": { + "info": "Clicked \"Add\" button in the fab.", + "reason": "Can't open fab.", + "dependency": null + }, + "2": { + "info": "Input a string in the \"Front template\" TextEditor", + "reason": null, + "dependency": "1" + } + }, + "warnings" : { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/AnkiDroid/configuration-#5756.json b/AnkiDroid/configuration-#5756.json new file mode 100644 index 0000000..23b2753 --- /dev/null +++ b/AnkiDroid/configuration-#5756.json @@ -0,0 +1,50 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#5756", + "events": { + "1": { + "info": "Clicked \"Add\" button in the fab.", + "reason": "Can't open the fab.", + "dependency": null + }, + "2": { + "info": "Save or add a note", + "reason": null, + "dependency": null + }, + "3": { + "info": "Selected \"Create filtered deck\" in the menu.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Created a new filtered deck.", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Switch order to \"Random\".", + "reason": null, + "dependency": "4" + }, + "6": { + "info": "Switch order back to \"Oldest seen first\".", + "reason": null, + "dependency": "4" + }, + "7": { + "info": "Go back from Options.", + "reason": null, + "dependency": "4" + }, + "8": { + "info": "Selected a deck.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + "4": "Canceled creating a new filtered deck." + }, + "all_events_happened": "The Decker may be empty or the corresponding deck doesn't been selected." +} diff --git a/AnkiDroid/configuration-#6145.json b/AnkiDroid/configuration-#6145.json new file mode 100644 index 0000000..5db74a5 --- /dev/null +++ b/AnkiDroid/configuration-#6145.json @@ -0,0 +1,42 @@ +{ + "app_name": "AnkiDroid", + "bug_id": "#6145", + "events": { + "1": { + "info": "Clicked \"AnkiDroid\" in Preferences.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Changed language to zh_CN.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked \"Advanced\" in Preferences.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Enabled the \"Experimental V2 Scheduler\".", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Selected \"Export colloction\" in menu at DeckPicker", + "reason": null, + "dependency": null + }, + "6": { + "info": "Selected \"OK\" in Export Dialog", + "reason": null, + "dependency": "5" + } + }, + "warnings" : { + "2": "Change language to other language (not Chinese)", + "4": "Disable the \"Experimental V2 Scheduler\".", + "6": "Selected \"Cancel\" in Export Dialog." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/FirefoxLite/configuration-#4881.json b/FirefoxLite/configuration-#4881.json new file mode 100644 index 0000000..7349df7 --- /dev/null +++ b/FirefoxLite/configuration-#4881.json @@ -0,0 +1,25 @@ +{ + "app_name": "FireFoxLite", + "bug_id": "#4881", + "events": { + "1": { + "info": "Clicked shopping button on the left bottom.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Searched a keyword.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Entered full screen.", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/FirefoxLite/configuration-#4942.json b/FirefoxLite/configuration-#4942.json new file mode 100644 index 0000000..cef2025 --- /dev/null +++ b/FirefoxLite/configuration-#4942.json @@ -0,0 +1,30 @@ +{ + "app_name": "FireFoxLite", + "bug_id": "#4942", + "events": { + "1": { + "info": "Clicked any site button.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Exited FireFoxLite.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Back to FireFoxLite.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Clicked [Tab tray].", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": "Should enable \"Don't keep activity\"." +} \ No newline at end of file diff --git a/FirefoxLite/configuration-#5058.json b/FirefoxLite/configuration-#5058.json new file mode 100644 index 0000000..8d9851b --- /dev/null +++ b/FirefoxLite/configuration-#5058.json @@ -0,0 +1,25 @@ +{ + "app_name": "FireFoxLite", + "bug_id": "#5058", + "events": { + "1": { + "info": "Clicked the menu on the right bottom.", + "reason": null, + "depedency": null + }, + "2": { + "info": "Clicked \"Setting\" in the menu.", + "reason": null, + "depedency": "1" + }, + "3": { + "info": "Changed the language.", + "reason": null, + "depedency": "2" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/Frost/configuration-#1323.json b/Frost/configuration-#1323.json new file mode 100644 index 0000000..ec18a9d --- /dev/null +++ b/Frost/configuration-#1323.json @@ -0,0 +1,15 @@ +{ + "app_name": "FrostForFacebook", + "bug_id": "#1323", + "events": { + "1": { + "info": "Reopened the app.", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": "Should change device to \"Airplan mode\" and reopen the app." +} \ No newline at end of file diff --git a/MaterialFBook/configuration-#224.json b/MaterialFBook/configuration-#224.json new file mode 100644 index 0000000..52e81f1 --- /dev/null +++ b/MaterialFBook/configuration-#224.json @@ -0,0 +1,11 @@ +{ + "app_name": "MaterialFBook", + "bug_id": "#224", + "events": { + + }, + "warnings": { + + }, + "all_events_happended": "Should perform any long click." +} \ No newline at end of file diff --git a/Omni-Notes/configuration-#745.json b/Omni-Notes/configuration-#745.json new file mode 100644 index 0000000..991d0a1 --- /dev/null +++ b/Omni-Notes/configuration-#745.json @@ -0,0 +1,50 @@ +{ + "app_name": "Omni-Notes", + "bug_id": "#745", + "events": { + "1": { + "info": "Clicked the floating action button.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Text note\" in the fab.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked the \"Clip\" button on the top options to add media.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Clicked the \"Camera\" in the lists.", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Returned a picture.", + "reason": null, + "dependency": null + }, + "6": { + "info": "Back.", + "reason": null, + "dependency": null + }, + "7": { + "info": "Clicked a note with picture.", + "reason": null, + "dependency": null + }, + "8": { + "info": "Clicked the picture in the note.", + "reason": null, + "dependency": "6" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/Scarlet-Notes/configuration-#114.json b/Scarlet-Notes/configuration-#114.json new file mode 100644 index 0000000..559436b --- /dev/null +++ b/Scarlet-Notes/configuration-#114.json @@ -0,0 +1,50 @@ +{ + "app_name": "ScarletNote", + "bug_id": "#114", + "steps": { + "1": { + "info": "Clicked \"Create New NoteBook\" on the right bottom.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Entered a notebook.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Clicked \"New note\" button on the right bottom.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Long clicked a note.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Clicked \"Locked Note\" in the note menu.", + "reason": null, + "dependency": "4" + }, + "6": { + "info": "Clicked the menu on the left bottom.", + "reason": null, + "dependency": null + }, + "7": { + "info": "Clicked \"Locked\" in the notebook menu.", + "reason": null, + "dependency": "6" + }, + "8": { + "info": "Clicked the \"X\" on the left bottom to close the notebook.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + + }, + "all_steps_reached": null +} \ No newline at end of file diff --git a/WordPress/configuration-#10302.json b/WordPress/configuration-#10302.json new file mode 100644 index 0000000..5a19e14 --- /dev/null +++ b/WordPress/configuration-#10302.json @@ -0,0 +1,20 @@ +{ + "app_name": "WordPress", + "bug_id": "#10302", + "events": { + "1": { + "info": "Pressed \"Log in or sign up with WordPress.com\" or \"Enter your existing site address\" in the welcome page.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"Help\" button.", + "reason": null, + "dependency": "1" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/WordPress/configuration-#10363.json b/WordPress/configuration-#10363.json new file mode 100644 index 0000000..9ba8715 --- /dev/null +++ b/WordPress/configuration-#10363.json @@ -0,0 +1,20 @@ +{ + "app_name": "WordPress", + "bug_id": "#10363", + "events": { + "1": { + "info": "Selected the \"Blog Posts\".", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"toggle_post_list_item_layout\" Buttom in the toolbar of PostsList.", + "reason": null, + "dependency": "1" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/WordPress/configuration-#10547.json b/WordPress/configuration-#10547.json new file mode 100644 index 0000000..72a99e9 --- /dev/null +++ b/WordPress/configuration-#10547.json @@ -0,0 +1,35 @@ +{ + "app_name": "WordPress", + "bug_id": "#10547", + "events": { + "1": { + "info": "Selected the \"Blog Posts\".", + "reason": null, + "dependency": null + }, + "2": { + "info": "Selected page \"Drafts\" in post list.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked \"Edit\" in the post list.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Selected \"Preview\" in options menu.", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Pressed back.", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": "Should enable \"Don't keep activities\"." +} \ No newline at end of file diff --git a/WordPress/configuration-#11135.json b/WordPress/configuration-#11135.json new file mode 100644 index 0000000..3bef5dc --- /dev/null +++ b/WordPress/configuration-#11135.json @@ -0,0 +1,20 @@ +{ + "app_name": "WordPress", + "bug_id": "#11135", + "events": { + "1": { + "info": "Selected the \"Reader\" page.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"reader_activity_comment_list\".", + "reason": null, + "dependency": "1" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/WordPress/configuration-#11992.json b/WordPress/configuration-#11992.json new file mode 100644 index 0000000..49941b0 --- /dev/null +++ b/WordPress/configuration-#11992.json @@ -0,0 +1,35 @@ +{ + "app_name": "WordPress", + "bug_id": "#11992", + "events": { + "1": { + "info": "Selected the \"Reader\" page.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Selected back to the \"My site\" page", + "reason": null, + "dependency": null + }, + "3": { + "info": "Selected the \"Blog Posts\".", + "reason": null, + "dependency": null + }, + "4": { + "info": "Exited the \"Blog Posts\".", + "reason": null, + "dependency": null + }, + "5": { + "info": "Selected the \"Site Pages\".", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": "Should select the \"Reader\" page and enter \"Blog post\" or \"Site pages\" twice or once respectively. " +} \ No newline at end of file diff --git a/WordPress/configuration-#6530.json b/WordPress/configuration-#6530.json new file mode 100644 index 0000000..b2a1048 --- /dev/null +++ b/WordPress/configuration-#6530.json @@ -0,0 +1,45 @@ +{ + "app_name": "WordPress", + "bug_id": "#6530", + "events": { + "1": { + "info": "Chose \"Try it\" to enable new editor.", + "reason": "Chose \"Not now\" instead.", + "dependency": null + }, + "2": { + "info": "Clicked the \"Blog posts\" at the main.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Clicked the floating act button to create a new post.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Clicked the \"+\" to open media window.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Added media files to post.", + "reason": "Can't read media files.", + "dependency": "4" + }, + "6": { + "info": "Pressed the Back button.", + "reason": null, + "dependency": null + }, + "7": { + "info": "Pressed the \"Delete\" button in the post list card view.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + "1": "Chose \"Not now\" to close the dialog. The crash wouldn't occur." + }, + "all_events_happended": "Should delete the post when uploading." +} \ No newline at end of file diff --git a/WordPress/configuration-#7182.json b/WordPress/configuration-#7182.json new file mode 100644 index 0000000..095d572 --- /dev/null +++ b/WordPress/configuration-#7182.json @@ -0,0 +1,35 @@ +{ + "app_name": "WordPress", + "bug_id": "#7182", + "events": { + "1": { + "info": "Pressed \"LOG IN\" in the welcome page.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Log in to your site by entering your site address instead.\" in the email login page.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked \"NEXT\" in site address login.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Changed screen to landscape.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Clicked \"NEXT\" in username and password login with landscape mode.", + "reason": null, + "dependency": "3" + } + }, + "warnings" : { + + }, + "all_events_happened": "Should keep landscape mode when logining." +} \ No newline at end of file diff --git a/and-bible/configuration-#261.json b/and-bible/configuration-#261.json new file mode 100644 index 0000000..748dee9 --- /dev/null +++ b/and-bible/configuration-#261.json @@ -0,0 +1,61 @@ +{ + "app_name": "AndBible", + "bug_id": "#216", + "steps": { + "1": { + "info": "Clicked \"OK\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"OK\" to download a document (bible or book).", + "reason": null, + "dependency": null + }, + "3": { + "info": "Select the document type to \"Book\" in \"Download Documents\".", + "reason": null, + "dependency": null + }, + "4": { + "info": "Clicked \"OK\" in \"Download Documents\"after downloading documents.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Opened the left drawer.", + "reason": null, + "dependency": null + }, + "6": { + "info": " Clicked \"Choose Document\" Button in the drawer.", + "reason": null, + "dependency": null + }, + "7": { + "info": "Selected a document.", + "reason": null, + "dependency": "6" + }, + "8": { + "info": "Selected a general book key.", + "reason": null, + "dependency": null + }, + "9": { + "info": "Clicked the \"Find\" Button in the drawer.", + "reason": null, + "dependency": null + }, + "10": { + "info": "Clicked \"CREATE\" in \"Search Index\".", + "reason": null, + "dependency": null + } + }, + "warnings" : { + "1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.", + "2": "Clicked \"CANCEL\" to give up downloading a document (bible or book)." + }, + "all_steps_reached": null +} \ No newline at end of file diff --git a/and-bible/configuration-#375.json b/and-bible/configuration-#375.json new file mode 100644 index 0000000..3dc5880 --- /dev/null +++ b/and-bible/configuration-#375.json @@ -0,0 +1,72 @@ +{ + "app_name": "AndBible", + "bug_id": "#375", + "events": { + "1": { + "info": "Clicked \"OK\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Selected a book.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Clicked \"OK\" to download a document(bible or book).", + "reason": null, + "dependency": null + }, + "4": { + "info": "Clicked \"OK\" in \"Download Documents\" after downloading documents.", + "reason": null, + "dependency": null + }, + "5": { + "info": "clicked \"New Tab\" in menu \"Tabs\".", + "reason": null, + "dependency": null + }, + "6": { + "info": "Set Current Document to a new book.", + "reason": null, + "dependency": null + }, + "7": { + "info": "Enter \"Choose Document\".", + "reason": null, + "dependency": null + }, + "8": { + "info": "Selected documents to delete.", + "reason": null, + "dependency": null + }, + "9": { + "info": "Deleting a document.", + "reason": null, + "dependency": null + }, + "10": { + "info": "Pressed back.", + "reason": null, + "dependency": null + }, + "11": { + "info": "Clicked \"Switch to tab\" in menu \"Tabs\".", + "reason": null, + "dependency": null + }, + "12": { + "info": "Selected a tab to open.", + "reason": null, + "dependency": null + } + + }, + "warnings": { + "1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.", + "3": "Clicked \"CANCEL\" to give up downloading a document(bible or book)." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/and-bible/configuration-#480.json b/and-bible/configuration-#480.json new file mode 100644 index 0000000..4fc6bf7 --- /dev/null +++ b/and-bible/configuration-#480.json @@ -0,0 +1,55 @@ +{ + "app_name": "AndBible", + "bug_id": "#480", + "events": { + "1": { + "info": "Clicked \"OK\" in the \"Download a Bible from the internet\" dialog at StartupActivity.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Downloaded a book.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Clicked \"OK\" in \"Download Documents\"", + "reason": null, + "dependency": null + }, + "4": { + "info": "Opened the left drawer.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Clicked \"Manage Bookmark Labels\" in the drawer.", + "reason": null, + "dependency": null + }, + "6": { + "info": "Clicked \"NEW LABEL\" in \"Manage Bookmark Labels\".", + "reason": null, + "dependency": null + }, + "7": { + "info": "Created or edited a label.", + "reason": null, + "dependency": null + }, + "8": { + "info": "Deleted a label.", + "reason": null, + "dependency": null + }, + "9": { + "info": "Edited a empty label.", + "reason": null, + "dependency": null + } + }, + "warnings": { + "1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/and-bible/configuration-#697.json b/and-bible/configuration-#697.json new file mode 100644 index 0000000..9378f07 --- /dev/null +++ b/and-bible/configuration-#697.json @@ -0,0 +1,46 @@ +{ + "app_name": "AndBible", + "bug_id": "#697", + "events": { + "1": { + "info": "Clicked \"OK\" in the \"Download a Bible from the internet\" dialog at StartupActivity.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Yes\" in \"Do you want to proceed to download documents?\" dialog \nor clicked \"download_do_not_ask\" in \"Do you want to proceed to download documents?\" dialog.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Downloaded a book.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Click \"OK\" in \"Download Documents\".", + "reason": null, + "dependency": null + }, + "5": { + "info": "Long pressed chapterVerse.", + "reason": null, + "dependency": null + }, + "6": { + "info": "Clicked myNoteAddEdit after longPressing chapterVerse.", + "reason": null, + "dependency": "5" + }, + "7": { + "info": "Clicked \"Back\" to save note.", + "reason": null, + "dependency": null + } + }, + "warnings": { + "1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.", + "2": "Clicked \"Cancel\" in \"Do you want to proceed to download documents?\" dialog." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/and-bible/configuration-#703.json b/and-bible/configuration-#703.json new file mode 100644 index 0000000..40e45b2 --- /dev/null +++ b/and-bible/configuration-#703.json @@ -0,0 +1,51 @@ +{ + "app_name": "AndBible", + "bug_id": "#703", + "events": { + "1": { + "info": "Clicked \"OK\" in the \"Download a Bible from the internet\" dialog at StartupActivity.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"Yes\" in \"Do you want to proceed to download documents?\" dialog \nor clicked \"download_do_not_ask\" in \"Do you want to proceed to download documents?\" dialog.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Downloaded a book.", + "reason": null, + "dependency": null + }, + "4": { + "info": "Click \"OK\" in \"Download Documents\".", + "reason": null, + "dependency": null + }, + "5": { + "info": "Long pressed chapterVerse.", + "reason": null, + "dependency": null + }, + "6": { + "info": "Clicked myNoteAddEdit after longPress chapterVerse.", + "reason": null, + "dependency": "5" + }, + "7": { + "info": "Clicked searchButton.", + "reason": null, + "dependency": null + }, + "8": { + "info": "Clicked CREATE after click searchButton.", + "reason": null, + "dependency": "7" + } + }, + "warnings": { + "1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.", + "2": "Clicked \"Cancel\" in \"Do you want to proceed to download documents?\" dialog." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/collect/configuration-#3222.json b/collect/configuration-#3222.json new file mode 100644 index 0000000..022faee --- /dev/null +++ b/collect/configuration-#3222.json @@ -0,0 +1,35 @@ +{ + "app_name": "Collect", + "bug_id": "#3222", + "events": { + "1": { + "info": "Clicked the \"General Settings\" in the options.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"Form management\" in \"General Settings\".", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Disabled the \"Hide old form version\" in \"Form management\".", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Back.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Clicked the \"Fill Blank Form\" in the main page.", + "reason": null, + "dependency": null + } + }, + "warnings": { + "3": "Enabled the \"hide old form version\" in \"Form management\"." + }, + "all_events_happened": "Should keep the state of Event 3." +} \ No newline at end of file diff --git a/commons/configuration-#1385.json b/commons/configuration-#1385.json new file mode 100644 index 0000000..9efba89 --- /dev/null +++ b/commons/configuration-#1385.json @@ -0,0 +1,30 @@ +{ + "app_name": "Commons", + "bug_id": "#1385", + "events": { + "1": { + "info": "Clicked \"Nearby\" in the drawer.", + "reason": "Can't open the drawer.", + "dependency": null + }, + "2": { + "info": "Clicked the \"Detail list\" in \"Nearby\".", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Changed the Nearby layout to landscape.", + "reason": "Can't rotate the screen.", + "dependency": null + }, + "4": { + "info": "Changed the Nearby layout back to portrait as soon as possible.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + + }, + "all_events_happened": "Didn't rotate back the screen from landscape to portrait in time." +} \ No newline at end of file diff --git a/commons/configuration-#1391.json b/commons/configuration-#1391.json new file mode 100644 index 0000000..db3c57b --- /dev/null +++ b/commons/configuration-#1391.json @@ -0,0 +1,36 @@ +{ + "app_name": "Commons", + "bug_id": "#1391", + "events": { + "1": { + "info": "Clicked \"Nearby\" in the drawer.", + "reason": "Can't open the drawer.", + "dependency": null + }, + "2": { + "info": "Selected a place on the map and showed the bottom sheet.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked \"Setting\" in the drawer.", + "reason": "Can't open the drawer.", + "dependency": null + }, + "4": { + "info": "Enabled the \"Night mode\" in the setting.", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Back to \"Nearby\" again.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + "2": "Cancelled a place on the map and hid the bottom sheet.", + "4": "Disabled the \"Night mode\" in the setting." + }, + "all_events_happened": "Should keep the state of Event 2 and enable the \"Night mode\" when enter \"Nearby\" again." +} \ No newline at end of file diff --git a/commons/configuration-#1581.json b/commons/configuration-#1581.json new file mode 100644 index 0000000..7a07fc5 --- /dev/null +++ b/commons/configuration-#1581.json @@ -0,0 +1,31 @@ +{ + "app_name": "Commons", + "bug_id": "#1581", + "events": { + "1": { + "info": "Clicked \"Nearby\" in the drawer.", + "reason": "Can't open the drawer.", + "dependency": null + }, + "2": { + "info": "Checked that GPS (location permission) is disabled.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Selected \"ENABLE GPS\" in the GPS requirement dialog.\nThis happens when the GPS is disabled.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Selected \"OK\" in the another GPS requirement dialog.\nThis happens when the GPS is enabled but this app isn't granted with GPS permission.", + "reason": null, + "dependency": null + } + }, + "warnings" : { + "3": "Selected \"CANCEL\" in the GPS requirement dialog.\nThis happens when the GPS is disabled.", + "4": "Selected \"CANCEL\" in the another GPS requirement dialog.\nThis happens when the GPS is enabled but this app isn't granted with GPS permission." + }, + "all_events_happened": "This crash requires that it's the first time to get permission from OS." +} \ No newline at end of file diff --git a/commons/configuration-#2123.json b/commons/configuration-#2123.json new file mode 100644 index 0000000..a676f14 --- /dev/null +++ b/commons/configuration-#2123.json @@ -0,0 +1,25 @@ +{ + "app_name": "Commons", + "bug_id": "#2123", + "events": { + "1": { + "info": "Clicked \"explore\" in the drawer.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked \"search\" in the explore.", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked any item in search results.", + "reason": null, + "dependency": "2" + } + }, + "warnings" : { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/commons/configuration-#3244.json b/commons/configuration-#3244.json new file mode 100644 index 0000000..8076444 --- /dev/null +++ b/commons/configuration-#3244.json @@ -0,0 +1,30 @@ +{ + "app_name": "Commons", + "bug_id": "#3244", + "events": { + "1": { + "info": "Clicked \"Nearby\".", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"Detail list\" in \"Nearby\".", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Selected a place in the nearby list.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Clicked the \"Camera\" in nearby list item menu.", + "reason": null, + "dependency": "3" + } + }, + "warnings" : { + + }, + "all_events_happened": "Should finish taking a photo." +} \ No newline at end of file diff --git a/geohashdroid/configuration-#73.json b/geohashdroid/configuration-#73.json new file mode 100644 index 0000000..a01b5e2 --- /dev/null +++ b/geohashdroid/configuration-#73.json @@ -0,0 +1,20 @@ +{ + "app_name": "GeoHashDroid", + "bug_id": "#73", + "events": { + "1": { + "info": "Clicked the \"GRATICULE\" on the bottom.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Checked the \"Globalhash!\" checkbox.", + "reason": null, + "dependency": "1" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/nextcloud/configuration-#1918.json b/nextcloud/configuration-#1918.json new file mode 100644 index 0000000..8a62e60 --- /dev/null +++ b/nextcloud/configuration-#1918.json @@ -0,0 +1,20 @@ +{ + "app_name": "NextCloud", + "bug_id": "#1918", + "events": { + "1": { + "info": " Clicked a photo in the list.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"Send/Share\" button in menu of Previewimage.", + "reason": "Can't open the menu", + "dependency": "1" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/nextcloud/configuration-#4026.json b/nextcloud/configuration-#4026.json new file mode 100644 index 0000000..2d427b5 --- /dev/null +++ b/nextcloud/configuration-#4026.json @@ -0,0 +1,20 @@ +{ + "app_name": "NextCloud", + "bug_id": "#4026", + "events": { + "1": { + "info": "Opened app NextCloud", + "reason": null, + "dependency": null + }, + "2": { + "info": "Enter NextCloud again.", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/nextcloud/configuration-#4792.json b/nextcloud/configuration-#4792.json new file mode 100644 index 0000000..d6f862b --- /dev/null +++ b/nextcloud/configuration-#4792.json @@ -0,0 +1,42 @@ +{ + "app_name": "NextCloud", + "bug_id": "#4792", + "events": { + "1": { + "info": "Opened the drawer on the left.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Selected the \"Auto upload\" in the drawer", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Selected \"Set up a custom folder\" in menu", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Selected \"Remote folder\" in \"Create new custom folder setup\".", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Selected the \"New folder\" in menu.", + "reason": null, + "dependency": "4" + }, + "6": { + "info": "Typed some chars and pressed \"Create\".", + "reason": null, + "dependency": "5" + } + }, + "warnings": { + "3": "Canceled the setup.", + "4": "Canceled choosing a remote folder.", + "6": "Canceled creating a new folder." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/nextcloud/configuration-#5173.json b/nextcloud/configuration-#5173.json new file mode 100644 index 0000000..1ec8f2c --- /dev/null +++ b/nextcloud/configuration-#5173.json @@ -0,0 +1,30 @@ +{ + "app_name": "NextCloud", + "bug_id": "#5173", + "events": { + "1": { + "info": "Opened the drawer on the left.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Selected the \"Auto upload\" in drawer", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Selected \"Set up a custom folder\" in menu", + "reason": "Can't open the menu on the right top.", + "dependency": "2" + }, + "4": { + "info": "Selected \"Remote folder\" in \"Create new custom folder setup\".", + "reason": null, + "dependency": "3" + } + }, + "warnings": { + "3": "Canceled the setup." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/openlauncher/configuration-#67.json b/openlauncher/configuration-#67.json new file mode 100644 index 0000000..f606496 --- /dev/null +++ b/openlauncher/configuration-#67.json @@ -0,0 +1,15 @@ +{ + "app_name": "OpenLauncher", + "bug_id": "#67", + "events": { + "1": { + "info": "Clicked the \"Volume\" icon in the drawer", + "reason": null, + "dependency": null + } + }, + "warnings": { + + }, + "all_events_happened": "Should open the \"Do not disturb\" pref in settings." +} \ No newline at end of file diff --git a/osmeditor4android/configuration-#637.json b/osmeditor4android/configuration-#637.json new file mode 100644 index 0000000..8f0fdcb --- /dev/null +++ b/osmeditor4android/configuration-#637.json @@ -0,0 +1,57 @@ +{ + "app_name": "OsmEditer4Android", + "bug_id": "#637", + "events": { + "1": { + "info": "Clicked \"LOAD\" in \"Download at other location\".", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked the \"Gear\" to enter \"Preferences\".", + "reason": null, + "dependency": null + }, + "3": { + "info": "Clicked \"Validator preference\" in \"Preferences\".", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Clicked a \"Re-survey entry\".", + "reason": null, + "dependency": "3" + }, + "5": { + "info": "Clicked \"DELETE\" in \"Edit re-survey entry\".", + "reason": null, + "dependency": "4" + }, + "6": { + "info": "Clicked a \"Check entry\".", + "reason": null, + "dependency": null + }, + "7": { + "info": "Clicked \"DELETE\" in \"Edit check entry\".", + "reason": null, + "dependency": "6" + }, + "8": { + "info": "Set key, value and max age respectively.", + "reason": null, + "dependency": null + }, + "9": { + "info": "Clicked \"Done\" in \"Validator ruleset Default\".", + "reason": null, + "dependency": null + } + }, + "warnings": { + "1": "Clicked \"GO TO MAP\" in \"Download at other location\"", + "5": "Clicked \"CANCEL\" or \"SAVE\" in \"Edit re-survey entry\".", + "7": "Clicked \"CANCEL\" or \"SAVE\" in \"Edit check entry\"." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/osmeditor4android/configuration-#729.json b/osmeditor4android/configuration-#729.json new file mode 100644 index 0000000..60836e9 --- /dev/null +++ b/osmeditor4android/configuration-#729.json @@ -0,0 +1,40 @@ +{ + "app_name": "OsmEditor4Android", + "bug_id": "#729", + "events": { + "1": { + "info": "Clicked the \"unlock\" floating button to unlock the map.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Clicked a position on the map.", + "reason": null, + "dependency": null + }, + "3": { + "info": "Selected a item in the popup list.", + "reason": null, + "dependency": "2" + }, + "4": { + "info": "Turned to property editor.", + "reason": null, + "dependency": null + }, + "5": { + "info": "Turned to \"Presets\" page in property editor.", + "reason": null, + "dependency": "4" + }, + "6": { + "info": "Searched in preset fragment with any string.", + "reason": null, + "dependency": "5" + } + }, + "warnings": { + "1": "Clicked the \"unlock\" floating button twice to lock the map." + }, + "all_events_happened": null +} \ No newline at end of file diff --git a/scripts/analyze_log.py b/scripts/analyze_log.py new file mode 100644 index 0000000..df265f5 --- /dev/null +++ b/scripts/analyze_log.py @@ -0,0 +1,155 @@ +import os.path +import re +import sys +import json +from datetime import datetime + + +def print_header(header: str): + com_len = int((80 - len(header)) / 2) + print("-" * com_len + header + "-" * com_len) + + +def print_title(title: str): + com_len = int((80 - len(title)) / 2) + print("*" * com_len + title + "*" * com_len) + + +def init_counts(events): + res = dict() + for event in events: + res[event] = 0 + return res + + +def file_exists(file_path): + if not os.path.exists(file_path): + print("file \'%s\' doesn't exists. Analysis terminated." % file_path) + return False + return True + + +class Analyzer: + + def __init__(self, json_path): + with open(json_path, "r", encoding="utf-8") as f: + info = json.load(f) + self.app_name = info["app_name"] # Get the name of the app + self.bug_id = info["bug_id"] # Get the bug id of + self.events = info["events"] # Get all events + self.total_event = len(self.events) # Get the numbers of events + self.event_counts = init_counts(self.events) # Init event counter + self.warning_counts = init_counts(self.events) # Init warning counter + self.warnings = info["warnings"] # Get all Warnings + self.procedure = [] # Maintain a list collecting the events analyzed + self.last_event = None # Record the last event analyzer has gone through + self.all_events_reached = info["all_events_reached"] + self.first_time = dict() # Record the time of first reaching event n + self.delta = None + + def analyze(self, log_path, time_path): + + # Process the time file + if not file_exists(time_path): + return False + with open(time_path, "r", encoding="utf-8") as f: + start_time = datetime.strptime(f.readline().split("\n")[0], "%Y-%m-%d-%H:%M:%S") + self.delta = datetime.strptime(f.readline().split("\n")[0], "%Y-%m-%d-%H:%M:%S") - start_time + + # Process the log file + if not file_exists(log_path): + return False + with open(log_path, "r", encoding="utf-8") as f: + for line in f: + if re.search("Themis", line): # Search “Themis" + + # Get the arrival time + info = line.split(' ') + event_time = datetime.strptime("2021-" + info[0] + " " + info[1].split('.')[0], "%Y-%m-%d %H:%M:%S") + + if re.search("Event ", line, re.I): # 匹配“event”字段 + event_id = line[re.search("event ", line, re.I).span()[1]] # Get event id + self.event_counts[str(event_id)] += 1 # The corresponding event count add 1 + self.last_event = event_id # Record the last event reached scanned + if event_id not in self.first_time: + self.first_time[event_id] = event_time - start_time # Record the relative time + + if re.search("Warning ", line, re.I): # 匹配“Warning”字段 + warning_id = line[re.search("Warning ", line, re.I).span()[1]] + self.warning_counts[warning_id] += 1 + + return True + + def show_result(self, tool_name): + + print_title("[ %s-%s (%s) ]" % (self.app_name, self.bug_id, tool_name)) + + print_header("[ The statistics of each event ]") + zero_count = 0 # Count up the events which are never reached + for event in self.event_counts: + if self.event_counts[event] == 0: + self.first_time[event] = None + zero_count += 1 + print(" "*10 + "[ %s ] Event %s/%d: %3d-%-3d. (%s/%s)\n" % + (self.bug_id, event, + self.total_event, + self.event_counts[event], + self.warning_counts[event], + self.first_time[event], self.delta) + + " "*14 + "> event info: %s" % self.events[event]["info"]) + if self.warning_counts[event] > 0: + print(" "*14 + "> Warning info: %s" % self.warnings[event]["info"]) + + if zero_count != 0: # If there is any event that its `count` > 0 + print_header("[ Analysis of the missing events ]") + for event in self.event_counts: + if self.event_counts[event] == 0: + print(" "*10 + "[ %s ] event %s\n" % (self.bug_id, event) + + " "*14 + "> The possible reason: %s\n" % self.events[event]["reason"] + + " "*14 + "> The previous related events: %s" % self.events[event]["dependency"]) + + if zero_count == 0: # If there is not any event that its `count` > 0 + print_header("[ All events reached but crash doesn't occur ]") + print(" "*10 + "[ %s ] The possible reason for this: %s" % (self.bug_id, self.all_events_reached)) + + print_title("[ Analysis finished ]") + + +def main(log_dir: str): + + base_dir = os.path.basename(log_dir) + first_pos, second_pos, third_pos, forth_pos = \ + re.search("instrumented-", base_dir).span(), \ + re.search("-#", base_dir).span(), \ + re.search(".apk.", base_dir).span(), \ + re.search(".result", base_dir).span() + + app_name, bug_id, tool_name = \ + base_dir[first_pos[1]: second_pos[0]].split("-")[0],\ + base_dir[second_pos[0]+1: third_pos[0]],\ + base_dir[third_pos[1]: forth_pos[0]] + + json_path = os.path.join("..", app_name, "configuration-" + bug_id + ".json") # Get the path of the json file + analyzer = Analyzer(json_path) # Initialize an Analyzer + + log_path = os.path.join(log_dir, "logcat.log") + print("[ Analyzer ] The log path:\n > %s" % log_path) + time_path = os.path.join(log_dir, tool_name + "_testing_time_on_emulator.txt") + print("[ Analyzer ] The time record path:\n > %s" % time_path) + + if analyzer.analyze(log_path, time_path): # Start analyzing log + analyzer.show_result(tool_name) + + +def help_info(): + print("[Usage]: python analyze_log.py log_path1[ log_path2[ ...]]") + print("[Usage]: Please put log files and the json file at the same directory with the same filename.") + + +if __name__ == "__main__": + if len(sys.argv) <= 1: + help_info() + else: + for i in range(1, len(sys.argv)): + main(sys.argv[i]) + diff --git a/sunflower/configuration-#239.json b/sunflower/configuration-#239.json new file mode 100644 index 0000000..048a060 --- /dev/null +++ b/sunflower/configuration-#239.json @@ -0,0 +1,25 @@ +{ + "app_name": "Sunflower", + "bug_id": "#239", + "events": { + "1": { + "info": "Clicked the drawer on the left.", + "reason": null, + "dependency": null + }, + "2": { + "info": "Selected \"Plant list\".", + "reason": null, + "dependency": "1" + }, + "3": { + "info": "Clicked two items at the same time.", + "reason": null, + "dependency": "2" + } + }, + "warnings": { + + }, + "all_events_happened": null +} \ No newline at end of file