> On Dec 12, 2018, at 11:16 AM, Maciej Stachowiak <m...@apple.com> wrote: > > > >> On Dec 12, 2018, at 10:07 AM, Jonathan Bedard <jbed...@apple.com >> <mailto:jbed...@apple.com>> wrote: >> >> Ryosuke and I discussed this on Monday, and in passing, Ryosuke mentioned >> that he personally finds something like this: >> >> <test-name>.html >> <test-name>-expected.txt >> <test-name>-expected-<device-type>.txt >> >> more clear than the directory method I proposed. After implementing the >> above approach in the patch uploaded to >> <https://bugs.webkit.org/show_bug.cgi?id=192162 >> <https://bugs.webkit.org/show_bug.cgi?id=192162>>, I¡¯m inclined to agree. >> Ryosuke¡¯s approach achieves everything we need for device-type specific >> expected results. >> >> This still doesn¡¯t solve disagreements about how to organize test results >> when a single test is run on multiple device types, but it seems like a step >> in the right direction. > > In my opinion, we should think about what kind of device and platform > differences we expect, and see if it can be organized into a single model. It > strikes me as odd to have two totally different ways to organize variant > results. And we don¡¯t necessarily need to consider different platforms to be > only targets with different binaries.
I think that we have 4 major reasons for differing expected results on different platforms: 1) Missing feature in the test harness 2) Feature differentiation 3) Bug (or quirk) from the device-type/platform/OS 4) Tests sensitive to screen size and graphics support (deep color, for example) #1 and #3 are well covered under our current scheme, and I haven¡¯t seen these types of differences connected to device type. #2 is usually connected to platform, occasionally OS version and in a few notable cases, iPad vs iPhone. #4 is pretty much exclusively tied to device type and is a difference that we have mostly ignored. > One issue with these flat device names is that they have no hierarchy. It was > hard for me to tell if your iPhone 7 vs iPhone 8 example of a difference was > real or just imaginary, but I¡¯d expect more tests to be different for iPhone > vs iPad than different for iPhone 7 vs iPhone 8, so it would be nice to have > a hierarchy for iPhone as a device class with different types of iPhones > under it. The iPhone 7 vs iPhone 8 difference was contrived, but even now we have a set of tests which must be run on an iPhone 7 instead of an iPhone SE because iPhone 7 supports deep color. So there are definitely circumstances where iPhones might have different expected results from other iPhones. In this proposal, I haven¡¯t detailed the specifics of parsing device types because that code actually already exists for creating simulated devices. At the moment, device types aren¡¯t implemented as a hierarchy, they¡¯re implemented by creating objects which use an ¡°is a¡± comparison. A log from a simulator test run shows this pretty well <free online bettinghttps://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Release%20WK2%20%28Tests%29/builds/1491/steps/layout-test/logs/stdio <https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Release%20WK2%20(Tests)/builds/1491/steps/layout-test/logs/stdio>>. Creating devices for iPhone SE running iOS 12 11:52:45.780 92192 Creating device 'Managed 0', of type iPhone SE running iOS 12 Creating devices for iPhone 7 running iOS 12 12:21:30.931 92192 Creating device 'Managed 0', of type iPhone 7 running iOS 12 Creating devices for iPad running iOS 12 12:21:49.425 92192 Creating device 'Managed 0', of type iPad (6th generation) running iOS 12 While I haven¡¯t given an example of a generic iPhone expected result, all the examples of iPad expected results have actually been that of a generic iPad, ¡®iPad (6th generation)¡¯ would we an example of a non-generic iPad. iPhones operate under a similar system, just as an ¡®iPad (6th generation)¡¯ uses generic iPad expectations, so too would an ¡®iPhone 7¡¯ use generic iPhone expectations, unless a more specific expected result was available. > > But of course, while a device hierarchy could be fit under a flat notion of > OS, the trick is how to fit it with a sequence of OS versions. Using > directories for OS versions but filename variations for devices classes seems > weird to me, and maybe almost backwards. I¡¯d expect many device class > differences to be permanent (iPhone vs iPad for example), while OS version > differences may be transitory, in that they are often quirks of an older OS > that will not matter once we no longer support that OS. > > I think it¡¯s worth thinking through all the variations that would be needed > for a few real tests (ideally ones that already vary by OS version but which > would also vary by device type) and make a single model that makes sense. I agree with the assessment of device types difference being more permanent while OS version difference are transitory. That¡¯s why we¡¯ve used the hierarchy for OS version, it allows us to collect transitory expectations together in a few directories. I don¡¯t think we want to pile on our existing hierarchy for iOS, this is what it looks like: platform/ios-simulator-12-wk2 platform/iso-simulator-12 platform/ios-simulator-wk2 platform/ios-simulator platform/ios-12 platform/ios-wk2 platform/ios platform/wk2 I also don¡¯t think that device type really fits the hierarchy model. Conceptually, device type is a parallel idea to OS version. In most cases, we would expect the results for a given iPad test to be the same for both iOS Simulator and iOS Device across all versions. It seems unwise to force the concept of device type and OS version into the same idiom. > > Maybe we should just use filename variations for everything, since that > naturally expresses independent variation along multiple dimensions, while > directories can only represent a single hierarchy. The trick then would be > figuring out the priority order. If I have <test-name>-expected-ios-ipad.txt > and <test-name>-expected-ios12.txt, then which is the right one to use on an > iOS 12 iPad? Maybe we could have a convention to make ambiguous variation > like this an error, or else decide whether OS version or device should take > priority. I think appending OS version to expected results will greatly complicate gardening test results. It¡¯s quite useful to be able to move around entire directories which correspond to OS version. Since OS version is always tied to platform, I think both of these need to remain directories as they are now. Jonathan > > Regards, > Maciej > > > >> >> Jonathan >> >>> On Dec 4, 2018, at 5:41 PM, Alexey Proskuryakov <a...@webkit.org >>> <free online bettingmailto:a...@webkit.org>> wrote: >>> >>> >>> >>>> 4 §Õ§Ö§Ü. 2018 §Ô., §Ó 16:43, Ryosuke Niwa <rn...@webkit.org >>>> <mailto:rn...@webkit.org>> §ß§Ñ§á§Ú§ã§Ñ§Ý(§Ñ): >>>> >>>> >>>> On Tue, Dec 4, 2018 at 12:55 PM Jonathan Bedard <jbed...@apple.com >>>> <mailto:jbed...@apple.com>> wrote: >>>> These directories would be along-side tests. >>>> >>>> I don't like that platform-specific results are under LayoutTests/platform >>>> and device-specific results are next to the tests. We should stick with >>>> either convention, not mix them up. >>>> >>>> If we were to match LayoutTests/platforms, we should probably put it under >>>> LayoutTests/devices, or alternatively inside each platform's test >>>> directory. Alternatively, I'd be fine if we moved platform specific >>>> results to those subdirectories. But having both conventions used >>>> throughout would be an insane mess. >>> >>> I'm not ready to have an opinion about which approach is best, however I >>> wanted to make a general comment about unification. >>> >>> I think that the attempt to abstract all sorts of differences behind the >>> "port" and "platform" concepts in webkitpy was short sighted. There are >>> many subtle and not so subtle variations of behaviors (OS, OS family, >>> specific OS version, build style, specific API used from the build when >>> there are multiple options). Trying to represent these by god objects is >>> creating a lot more inconsistency and confusion than necessary. >>> >>> One good thing about platform directories is that we can specify >>> inheritance order with these in a way that is somewhat meaningful. If we >>> are to have an inheritance order for device types, then continuing with the >>> approach would make sense. But if the rule is exact match, or best match, >>> then storing them as -expected directories makes good sense to me. >>> >>> - Alexey >>> >> >> _______________________________________________ >> webkit-dev mailing list >> email@example.com <mailto:firstname.lastname@example.org> >> https://lists.webkit.org/mailman/listinfo/webkit-dev >> <https://lists.webkit.org/mailman/listinfo/webkit-dev>
_______________________________________________ webkit-dev mailing list email@example.com https://lists.webkit.org/mailman/listinfo/webkit-dev