webrtc / KITE

KITE is a test engine designed to test WebRTC interoperability across browsers
Apache License 2.0
468 stars 126 forks source link

Problems with Firefox on Linux #133

Closed CMor1184 closed 4 years ago

CMor1184 commented 4 years ago

Hi,

I have problems that the KITE Example Test (and all others) can not start an instance of Firefox. Firefox 77 is installed and if I run the grid console i see both nodes are available.

This is my config:

export INSTALL_BROWSERS=TRUE

export USE_CAPABILITY_MATCHER=FALSE

export DESKTOP_ENVIRONMENT=TRUE

export LOCALHOST=TRUE

export GECKO_VERSION=v0.26.0
export CHROMEDRIVER_VERSION=83.0.4103.39

export SELENIUM_VERSION_SHORT=3.141
export SELENIUM_VERSION=3.141.59

export FIREFOX_VERSION=77
export CHROME_VERSION=83

export KITE_EXTRAS_VERSION=0.1.65
export GRID_UTILS_VERSION=0.0.1

Exception on NODE FIREFOX: { "platformName": "linux", "version": "77" } 03:14:13.888 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.firefox.GeckoDriverService) 03:15:05.968 WARN [RemoteSession$Factory.performHandshake] - Failed to connect to localhost/127.0.0.1:32168 java.net.ConnectException: Failed to connect to localhost/127.0.0.1:32168 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall.execute(RealCall.java:77) at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:103) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:105) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74) at org.openqa.selenium.grid.session.remote.RemoteSession$Factory.performHandshake(RemoteSession.java:147) at org.openqa.selenium.grid.session.remote.ServicedSession$Factory.apply(ServicedSession.java:161) at org.openqa.selenium.remote.server.ActiveSessionFactory.lambda$apply$12(ActiveSessionFactory.java:180) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:440) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531) at org.openqa.selenium.remote.server.ActiveSessionFactory.apply(ActiveSessionFactory.java:183) at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$2(NewSessionPipeline.java:66) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.Collections$2.tryAdvance(Collections.java:4719) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531) at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$3(NewSessionPipeline.java:69) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.DistinctOps$1$2.accept(DistinctOps.java:175) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.stream.Streams$StreamBuilderImpl.tryAdvance(Streams.java:405) at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:728) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531) at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:72) at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:65) at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:235) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:607) at okhttp3.internal.platform.Platform.connectSocket(Platform.java:129) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245) ... 71 more 03:15:05.978 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.firefox.GeckoDriverService)

Do you have an idea whats going on?

Thanks,

Chris

namvuCosmo commented 4 years ago

Hello Chris,

Can you give me the steps to reproduce what you did?

CMor1184 commented 4 years ago

Hi,

yes, sure:

I have started the localGrid and checked if the grid and the nodes are running (with the grid console).

I see the node firefox and node chrome are registered to the hub and ready to use.

After that I opened a new terminal window and opened the folder "KITE-Example-Test" and run the command "r configs/search.local.config.json".

The test started and it seems that everything is okay on chrome (chrome is opened and controlled by third party software). But the firefox node throws the upper named exception in the Node Console.

Thanks,

Chris

namvuCosmo commented 4 years ago

I can reproduce this on my Ubuntu machine, I'll investigate and get back to you.

namvuCosmo commented 4 years ago

After launching the grid, do you see a folder call localGrid in the main KITE directory?

CMor1184 commented 4 years ago

After launching the grid, do you see a folder call localGrid in the main KITE directory?

Yes sure, the localGrid folder in the KITE root directory is still present (from there i start the grid by executing the "startGrid.sh").

CMor1184 commented 4 years ago

@namvuCosmo did you find anything?

namvuCosmo commented 4 years ago

Hi,

Sorry for not replying, I've been really busy these days with other projects.

The last time I tried this, the error appeared only once, after I call the ./configureLinux.sh the first time, I suspect the KITE_HOME was not registered at that point and it messed things up. Skip the grid setup the 1st time, and run ./configureLinux.sh again, and things should be ok. I'll try to fix this when I can.

If it's ok, maybe you can consider launching a grid manually instead of using the script, it's pretty straight forward.

Edit: Actually I just took another look, I think the geckodriver for firefox was not downloaded during the setup, maybe broken link. Can you look into the localGrid/firefox, I think you won't find the geckodriver in there. You can download it here: https://github.com/mozilla/geckodriver/releases and put it in the folder. Then you can just launch the grid with the script.

A-nguyenv commented 4 years ago

Hello, It appears the script downloads the 32-bit version for geckodriver. This one doesn't work for 64-bit linux. You can download the right version here: https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz ; or you can change the script scripts/linux/installDrivers.sh l. 9-10 to

wget https://github.com/mozilla/geckodriver/releases/download/$GECKO_VERSION/geckodriver-$GECKO_VERSION-linux64.tar.gz
tar xvzf geckodriver-$GECKO_VERSION-linux64.tar.gz

You can as well pull our new code when it will be updated.