change how we parse simulator output to incorporate try bots#18
change how we parse simulator output to incorporate try bots#18nturgut merged 3 commits intoflutter:masterfrom
Conversation
| final String restOfTheOutput = simulatorsList | ||
| .substring(indexOfVersionListStart + simulatorVersion.length); | ||
| final int indexOfNextVersion = restOfTheOutput.indexOf('--'); | ||
| int indexOfNextVersion = restOfTheOutput.indexOf('--'); |
There was a problem hiding this comment.
can we do a more specific regex, rather than relying on --? I worry that a future change to this output could lead to a hard to spot regression.
There was a problem hiding this comment.
Hmm, never mind...I see that would be difficult...
christopherfujino
left a comment
There was a problem hiding this comment.
I will approve this to unblock you. I think the long-term solution is to pass the --json flag to simctl. For reference: https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/ios/simulators.dart#L89
| final int indexOfVersionListStart = | ||
| simulatorsList.indexOf(simulatorVersion); | ||
| final String restOfTheOutput = simulatorsList | ||
| .substring(indexOfVersionListStart + simulatorVersion.length); |
There was a problem hiding this comment.
What if indexOfVersionListStart == -1?
There was a problem hiding this comment.
This will also fail an exception like now. This code relies on the current formatting very much: "--" or "==" kills all the code. I think @christopherfujino suggestion would be the best change.
| // iPad Pro (11-inch) (E0B89C9C-6200-495C-B18B-0078CCAAC688) (Shutdown) | ||
| // iPad Pro (12.9-inch) (3rd generation) (DB3EB7A8-C4D2-4F86-AFC1-D652FB0579E8) (Shutdown) | ||
| // iPad Air (3rd generation) (9237DCD8-8F0E-40A6-96DF-B33C915AFE1B) (Shutdown) | ||
| // == Device Pairs == |
There was a problem hiding this comment.
I think this implementation can be simplified if it first split the output line by line, then inspected each line. There are only two interesting line formats:
-- OS MAJOR.MINOR --, such as-- iOS 13.0DEVICE (HASH) (STATE), sush asiPhone 8 (C142C9F5-C26E-4EB5-A2B8-915D5BD62FA5) (Shutdown)
A single line-by-line for/in loop can detect both OS version and the requested device.
There was a problem hiding this comment.
thanks a lot for the suggestion, I think I'll used --json tag and will get rid of this parsing all together :)
| // iPhone 11 Pro (D8074C8B-35A5-4DA5-9AB2-4CE738A5E5FC) (Shutdown) | ||
| // Example output 2 (from Mac Web Engine try bots): | ||
| // == Devices == | ||
| // -- iOS 13.0 -- |
There was a problem hiding this comment.
Is this example demonstrating the need for the new code? If so, then I'm not sure how it does that. restOfTheOutput.indexOf('--') is >0 (because the string does contain --), so the new code won't execute 🤔
There was a problem hiding this comment.
in one of them the version was finishing with '--' now it finishes with "==". let me write an explanation, but as mentioned in the earlier comment my next PR would be just removing these.
There was a problem hiding this comment.
I have local test for these things btw which I don't merge let me also send it!
I think this is a very good solution! Thanks a lot, I was under the impression that this parsing will cause me many more bugs in the future. I feel the ultimate savior would be (initially suggested by @yjbanov ) triggering CI from this bot. I was reading the document @godofredoc shared with me but I still found it a little hard to add LUCI to presubmit. Do you have some example PRs that can help to add LUCI to web_installers. |
Sorry, I'm not even sure what this repo is :P. Would you be triggering existing recipes or adding a new one specifically to exercise changes to this logic? |
Sorry I used it for repository :) I meant flutter/web_installers repository I would like to write a small recipe for flutter/web_installers repository. I want to run it Mac Web Engine try bots when a PR is send out to this repo. I read the documentation but it would be best if there are example PRs. |
I've never added LUCI checks to a GitHub repo. Maybe @Piinks could link some sample PRs? I think she did this for the SkiaGold check. |
Please let me know where are you stuck in the process of adding luci support and I'll improve the docs. |
|
The try bots output for
xcrun simctl listwas slightly different then my local and the prod bots.Therefore the code that I wrote for parsing the id was failing.
Locally tested with output from link: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket.appspot.com/8876584155254712000/+/steps/felt_ios-safari_test/0/stdout