jpjones76 / SeisIO.jl

Julia language support for geophysical time series data
http://seisio.readthedocs.org
Other
47 stars 21 forks source link

Test error during SeedLink test #75

Open spri902 opened 3 years ago

spri902 commented 3 years ago

Attached test log. Error reporting starts at line 772.

SeisIOTestErr.txt

jpjones76 commented 3 years ago

Interesting test error. I'm going to try pushing a simple fix for this today, but the only way I'll know if it worked is if the SeedLink test fails to connect ... that never really happens on my end anymore. Are you using the master branch, or a release version?

spri902 commented 3 years ago

Sorry should have given you more info. I have Julia 1.3.1 and I pulled the SeisIO release through the Atom IDE.

jpjones76 commented 3 years ago

Oh. Do you see the same error if you test in Julia 1.0 or 1.5?

jpjones76 commented 3 years ago

Hi, I've never been able to reproduce this in any version of Julia for any operating system. Any more information here? Also, what operating system?

I asked about other versions of Julia because v1.3.x releases aren't really supported by package maintainers anymore. The de facto standard in Julia language development is to test long-term support (Julia v1.0.5) and current release (at the moment, Julia v1.5.3).

If this is resolved, I'd like to close the issue.

spri902 commented 3 years ago

Hi, I'm running MacOS Mojave 10.14.6 and I've upgraded to Julia 1.5. I am now using VSCode instead of Atom. I just reinstalled SeisIO and ran the test and received the following:

SeedLink (SeedLink tests require up to 6 minutes) has_stream one or more queries incomplete after 60 s; skipping test. ERROR: LoadError: LoadError: MethodError: Cannot convert an object of type Type{Nothing} to an object of type Task Closest candidates are: convert(::Type{T}, ::Intervals.Interval{T,L,R} where R<:Intervals.Bound where L<:Intervals.Bound) where T at /Users/spri902/.julia/packages/Intervals/ua9cq/src/interval.jl:253 convert(::Type{T}, ::Intervals.AnchoredInterval{P,T,L,R} where R<:Intervals.Bounded where L<:Intervals.Bounded) where {P, T} at /Users/spri902/.julia/packages/Intervals/ua9cq/src/anchoredinterval.jl:181 convert(::Type{T}, ::T) where T at essentials.jl:171 ... Stacktrace: [1] convert(::Type{Union{Nothing, Task}}, ::Type{T} where T) at ./some.jl:34 [2] setindex!(::Array{Union{Nothing, Task},1}, ::Type{T} where T, ::Int64) at ./array.jl:847 [3] SL_wait(::Array{Union{Nothing, Task},1}, ::Int64) at /Users/spri902/.julia/packages/SeisIO/xmXyu/test/TestHelpers/seedlink_helpers.jl:10 [4] top-level scope at /Users/spri902/.julia/packages/SeisIO/xmXyu/test/Web/test_seedlink.jl:21 [5] include(::String) at ./client.jl:457 [6] top-level scope at /Users/spri902/.julia/packages/SeisIO/xmXyu/test/runtests.jl:38 [7] include(::String) at ./client.jl:457 [8] top-level scope at none:6 in expression starting at /Users/spri902/.julia/packages/SeisIO/xmXyu/test/Web/test_seedlink.jl:21 in expression starting at /Users/spri902/.julia/packages/SeisIO/xmXyu/test/runtests.jl:27 ERROR: Package SeisIO errored during testing

I've done this a few times and it always dies for me during the SeedLink test

tclements commented 3 years ago

@spri902 Have you tried running SeisIO tests while using a VPN? This might have to do with your IP address?

spri902 commented 3 years ago

I've tried at work (behind the VPN) and on my home (non VPN) network. Seems to happen on both. I will try again tonight at home to make sure it's not the VPN issue.

jpjones76 commented 3 years ago

The error is caused by a SeedLink timeout. I can't reproduce it because I can't cause a SeedLink timeout on my test machines; SeedLink always succeeds. In fact, on travis-ci and appveyor, my SeedLink tests haven't timed out since summer 2018.

Do you need to manually configure port forwarding for a firewall or router? The default SeedLink port is 18000 according to SeisComp documentation (https://www.seiscomp.de/seiscomp3/doc/seattle/2012.279/apps/seedlink.html). That's different from most web requests (e.g., get_data). To the best of my knowledge, every other web request in SeisIO uses port 80.