(DBConnection.ConnectionError) tcp recv: closed

Hello,

I’m working on my project: https://github.com/HedonSoftware/Igthorn

This was going well up to some moments but as I started to add more tests it started to error:

  1) test Naive trader retarget test (Hefty.Algos.NaiveTest)
     test/algos/naive_test.exs:271
     ** (exit) exited in: DBConnection.Holder.checkout(#PID<0.390.0>, [log: #Function<11.70725129/1 in Ecto.Adapters.SQL.with_log/3>, pool_size: 10, timeout: 60000, pool: DBConnection.ConnectionPool])
         ** (EXIT) shutdown
     code: stream_events(symbol, settings, events)
     stacktrace:
       (db_connection) lib/db_connection/holder.ex:71: DBConnection.Holder.checkout/2
       (db_connection) lib/db_connection.ex:1030: DBConnection.checkout/3
       (db_connection) lib/db_connection.ex:1340: DBConnection.run/6
       (db_connection) lib/db_connection.ex:540: DBConnection.parsed_prepare_execute/5
       (db_connection) lib/db_connection.ex:533: DBConnection.prepare_execute/4
       (postgrex) lib/postgrex.ex:217: Postgrex.query_prepare_execute/4
       (ecto_sql) lib/ecto/adapters/sql.ex:292: Ecto.Adapters.SQL.query!/4
       test/algos/naive_test.exs:450: Hefty.Algos.NaiveTest.setup_trading_environment/2
       test/algos/naive_test.exs:485: Hefty.Algos.NaiveTest.stream_events/3
       test/algos/naive_test.exs:301: (test)

It’s interesting that tests are running fine currently on that branch, but there’s a single test that I disabled that does exactly the same things as other tests. The moment I will remove @skip(it’s here: https://github.com/HedonSoftware/Igthorn/blob/0.0.3/apps/hefty/test/algos/naive_test.exs#L271) tag above errors shows up and it’s driving me crazy. Any idea?

I the meantime I added other test and it fails from the same issue.

Interesting fact - after disabling other test - this new one works which would indicate that too long tests are connected to the issue.

1 Like

Take a look at Ecto.Adapters.SQL.Sandbox docs.

Thanks for your reply.

I read through the docs but I don’t see a big point (well beside speed) to use it - there’s a lot of things that deal with database in my codebase - a lot of processes have state, that queries db etc.

My point is quite opposite - can I run all the tests permanently sequential even between files?

I’m running with --trace but this one makes tests sequential inside a single file.

I don’t fully understand why database connection would die suddenly even when I’m testing a single file:

mix test --trace $(pwd)/apps/hefty/test/algos/naive_test.exs

On the branch some of tests are disabled and works fine (with currently enabled ones). The rest of the tests should be enabled but the moment that I will enable one for example comment out this line https://github.com/HedonSoftware/Igthorn/blob/0.0.3/apps/hefty/test/algos/naive_test.exs#L337 - it’s falling apart…

The docs I linked pertain to DB connection ownership during testing, sorry if I misunderstood your intent.

As for sequential tests, I am not sure if async: false would be enough for your needs.