[fyi] icedtea-web - making browsers tests more stable - softkiller, session backup and it integration to firefox

Adam Domurad adomurad at redhat.com
Mon Nov 26 13:52:52 PST 2012


On 11/23/2012 06:02 AM, Jiri Vanek wrote:
> Hi!
>
> Pushed.
>
> I'm also attaching new integration patch for your softkiller, which 
> you will need later, when you will smuggle softkiller to ITW :)
> Please note especially last two lines of attached patch:
> -            //ProcessAssasin.closeWindows(s);
> +            ProcessAssasin.closeWindows(s);
>
> Those will enable the softkiller for firefox. Other integrations are 
> done.
>
> Although to have it enabled it now was making no real harm, it was 
> spamming the output with exceptions.
>
> J.
>
> On 11/21/2012 02:48 PM, Pavel Tisnovsky wrote:
>> Hi Jiri,
>>
>> First part:
>>   - I can't say anything about the softkiller itself ;-), let's have 
>> another pair of eyes to look at it
>>   - Makefile changes looks ok
>>
>> Second part:
>>   - All license headers are now indented by one more char in the diff 
>> - I'm not sure how it happened
>>     but it don't have to be part of this change
>>
>>   - I'm not sure if those new variables should or must be volatile 
>> because they are changed and read
>>     form two or more threads w/o synchronization:
>> +    //signifies that assasin have been summoned
>> +    private boolean killing = false;
>> +    //signifies that assasin have done its job
>> +    private boolean killed = false;
>>
>>   - Support for more listeners - OK
>>
>>   - listener.lineReaded()... AFAIK "readed" should be written as 
>> "read" because it is irregular verb ;)
>>
>>   - Following code is a bit strange, some copy&  paste error? :)
>> +        } catch (NullPointerException ex) {
>> +            ex.printStackTrace();
>> +        } //do not want to bother output with terminations
>> +        //mostly compaling when assassin kill the process about 
>> StreamClosed
>> +        //do not want to bother output with terminations
>> +        //mostly compaling when assassin kill the process about 
>> StreamClosed
>>
>> +    public static void closeWindow(String pid) throws Exception {
>> +        List<String>  ll = new ArrayList<String>(4);<-- should be 2 
>> here?
>> +        ll.add(ServerAccess.getInstance().getDir().getParent() + 
>> "/softkiller");
>> +        ll.add(pid);
>>
>> - +    //signifies that assasin have been summoned - haha we are 
>> going to transform IT-web into a game :D
>>
>> - diff -r c61b2db7d32f 
>> tests/test-extensions/net/sourceforge/jnlp/ProcessWrapper.java
>>    would be better to have some javadoc with explanation what this 
>> class does
>>
>> - huh?
>> +        f.delete();
>> +        ;
>> +        f.mkdir();
>>
>> In overall your big patch seems to be correct and giving that tests 
>> are now more stable
>> I think it's ok to push it to HEAD.
>>
>> Cheers,
>> Pavel
>>
>>
>>
>> ----- Jiri Vanek<jvanek at redhat.com>  wrote:
>>> Hi!
>>>
>>> This is another effort to make browser tests more stable.
>>>
>>> First part - softkiller - is Pavels attempt to close window "like 
>>> cross is clicked". Hmm It is working... I'm still not sure how. 
>>> Firefox looks to endure longer without safe mode, but eg opera can 
>>> not survive it. And eg streams from browsers are flushed more 
>>> properly. But also some lags are here which make it simetimes 
>>> unstable. It also contains its integration to ITW make processes.
>>> /me  is not taking any responsibility for this part :)
>>>
>>>
>>> Second part is oriented to usage of softkiller where possible and to 
>>> backuping and restoring of FF sessions(by backuping/restoring 
>>> profiles).
>>>
>>> To do this I had to do quite large refactoring, so the 
>>> "executeProcess" logic will possible to accept implementations of 
>>> some Interfaces, and then will be able to launch the interface's 
>>> methods.
>>> All the executeProcess have been moved to ProcessWraper class. (old 
>>> methods in ServerAccess like executeJavaws are now creating 
>>> ProcessWraper instance). All browsers now Implements 
>>> ReactableProcess, which can be called
>>> by executeProcess beforeProcess, afterProcess,beforeKill and 
>>> afterKill. Implementation is done just for firefox, but I believe it 
>>> will be helpful when other processes eill nedd some tunning. Usage 
>>> of interface's methods in firefox for backuping/restoring session is 
>>> quite strightforward then
>>>
>>>
>>> Any hints (especially to this early design) welcomed!
>>>
>>> J.
>>
>

Hi, lending some extra eyes.

The C portion looked good to me (very correctness-conscious too :). I 
cannot comment too deeply on the correctness of the API usage but it all 
seems in order.

Happy hacking,
- Adam



More information about the distro-pkg-dev mailing list