[Mesa-dev] Piglit on windows
Kyriazis, George
george.kyriazis at intel.com
Tue Oct 10 19:14:00 UTC 2017
> On Oct 10, 2017, at 1:23 PM, Dylan Baker <dylan at pnwbakers.com> wrote:
>
> Quoting Kyriazis, George (2017-10-10 11:02:26)
>>
>>> On Oct 10, 2017, at 12:46 PM, Dylan Baker <dylan at pnwbakers.com> wrote:
>>>
>>> Quoting Jose Fonseca (2017-10-10 08:41:49)
>>>> On 10/10/17 16:31, Kyriazis, George wrote:
>>>>> Hello…
>>>>>
>>>>> Piglit on windows prints out a message saying “Timeout are not implemented on Windows.”. These timeouts are the test timeouts in case a test hangs.
>>>>>
>>>>> What do people do when running piglit on windows and they hit a timeout? I would imagine there would be a non-zero number of people running piglit on windows on a regular basis, as a regression tool...
>>>>>
>>>>> Thank you!
>>>>>
>>>>> George
>>>>
>>>> I haven't been involved into piglit Windows testing lately, so my
>>>> understanding might be dated.
>>>>
>>>> I believe that we have timeouts when we test piglit on Windows. It's not
>>>> implemented on piglit python framework itself, but rather on VMware
>>>> testing framework (that driver piglit, and a bunch of other tests.)
>>>>
>>>> That said, I believe it would be better long term if piglit framework
>>>> had timeouts on Windows, as it can probably track that with finer
>>>> granularity than we do now by putting a timeout on whole piglit or
>>>> subsets of piglit tests.
>>>>
>>>> python3's subprocess module has timeout options, so it should be
>>>> relatively easy to implement on top of it, in a cross-platform manner.
>>>>
>>>> Jose
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>> Since I added that warning message...
>>>
>>> There are no timeouts in python 2 on windows, even with 3rd party packages.
>>>
>>> For python 3 to properly handle timeouts you need to kill the process that
>>> exceeds the expected timeout. Basically when timeout expires the sub-process
>>> communicate call stops blocking, but doesn't actually kill the process. On Linux
>>> we ask the process to terminate, wait 3 seconds and then SIGKILL it.
>>>
>>> I don't know how to do that on windows, so I didn't implement it and instead
>>> windows users get a warning. If someone with a basic grasp of how to kill a
>>> process on windows wanted that functionality it probably wouldn't be too hard to
>>> implement.
>>>
>>> Alternatively there are constructs that are only in python 3 that do the killing
>>> for you, on both Windows and Linux, but they don't have a python 2 equivalent.
>>>
>> Hmm.. Since the current code has special cases between python 2/3 and windows/linux, finding a cross-platform method for both OSes seems like a “nice to have” at this point, although desirable.
>>
>> I’ll see if I can find a quick fix for this.
>>
>> Thank you!
>>
>> George
>>
>>> Dylan
>>
>
> You could have a look at framework/test/base.py, the logic is in there. I don't
> think it would really be that much code to add to that mess, and we could always
> delete it whenever we finally decide that we don't care about python 2 anymore.
>
> Dylan
The interest is for python3, I don’t think windows piglit works with python2 anyway. The README file lists python3 as a requirement for windows.
So, I did some simple tests with Popen() on windows, and it looks like commnicate() understands the timeout argument, and proc.kill() seems to work (at least for simple things, like “sleep”).
Maybe python3 support changed between the time you wrote the code and now? I’m using Python 3.6.3.
Thanks,
george
More information about the mesa-dev
mailing list