Skip to content

Commit adcbd3a

Browse files
committed
fixing travis yaml
1 parent ad690bc commit adcbd3a

12 files changed

+102
-89
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
## 0.7.0
2+
3+
* Enhancements
4+
* refactored event notification system
5+
* added support for retryable reads and writes
6+
* refactored the test cases
7+
* now using mtools for a MongoDB deployment in the travis ci environment
8+
* travis ci uses only the latest MongoDB version [The failCommand](https://github.com/mongodb/mongo/wiki/The-%22failCommand%22-fail-point)
9+
110
## 0.6.5
211

312
* Enhancements

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,21 @@ Using `$in`
352352
Mongo.find(:mongo, "users", %{email: %{"$in" => ["[email protected]", "[email protected]"]}})
353353
```
354354

355-
## Testing
355+
## Testing and Travis CI
356+
357+
The `travis.yml` file uses only the latest MongoDB. It creates a replica set of three nodes and disables the SSL test case. If you want to
358+
run the test cases against other MongoDB deployments or older versions, you can use the [mtools](https://github.com/rueckstiess/mtools) for deployment and run the test cases locally:
359+
360+
### Example
361+
362+
```bash
363+
pyenv global 3.6
364+
pip3 install --upgrade pip
365+
pip3 install mtools[all]
366+
export PATH=to-your-mongodb/bin/:$PATH
367+
mlaunch init --setParameter enableTestCommands=1 --replicaset --name "rs_1"
368+
mix test --exclude ssl --exclude socket
369+
```
356370

357371
The SSL test suite is enabled by default. You have two options. Either exclude
358372
the SSL tests or enable SSL on your Mongo server.

lib/mongo/app.ex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ defmodule Mongo.App do
77
children = [
88
worker(Mongo.IdServer, []),
99
worker(Mongo.PBKDF2Cache, []),
10-
worker(:gen_event, [local: Mongo.Events]),
1110
supervisor(Registry, [:duplicate, :events_registry])
1211
]
1312

test/mongo/bulk_writes_test.exs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
defmodule Mongo.BulkWritesTest do
2-
use MongoTest.Case
2+
3+
use CollectionCase
34

45
alias Mongo.UnorderedBulk
56
alias Mongo.OrderedBulk
67
alias Mongo.BulkWrite
78
alias Mongo.BulkOps
89
alias Mongo.BulkWriteResult
910

10-
setup_all do
11-
assert {:ok, pid} = Mongo.TestConnection.connect
12-
Mongo.drop_database(pid)
13-
{:ok, [pid: pid]}
14-
end
15-
1611
test "check unordered bulk", top do
17-
coll = "dogs" # unique_name()
12+
coll = unique_collection()
1813

1914
bulk = coll
2015
|> UnorderedBulk.new()
@@ -36,7 +31,7 @@ defmodule Mongo.BulkWritesTest do
3631
end
3732

3833
test "check ordered bulk", top do
39-
coll = unique_name()
34+
coll = unique_collection()
4035

4136
bulk = coll
4237
|> OrderedBulk.new()
@@ -59,7 +54,7 @@ defmodule Mongo.BulkWritesTest do
5954
end
6055

6156
test "check ordered bulk with stream and a buffer of 25 operations", top do
62-
coll = unique_name()
57+
coll = unique_collection()
6358

6459
1..1000
6560
|> Stream.map(fn
@@ -75,7 +70,7 @@ defmodule Mongo.BulkWritesTest do
7570
end
7671

7772
test "check unordered bulk upserts", top do
78-
coll = unique_name()
73+
coll = unique_collection()
7974

8075
bulk = coll
8176
|> UnorderedBulk.new()
@@ -95,7 +90,7 @@ defmodule Mongo.BulkWritesTest do
9590
end
9691

9792
test "check ordered bulk upserts", top do
98-
coll = unique_name()
93+
coll = unique_collection()
9994

10095
bulk = coll
10196
|> OrderedBulk.new()
@@ -116,7 +111,7 @@ defmodule Mongo.BulkWritesTest do
116111
end
117112

118113
test "create one small document and one large 16mb document", top do
119-
coll = unique_name()
114+
coll = unique_collection()
120115
max_n = (16*1024*1024) - 44 # 44 bytes for 'key: "big" and v:'
121116

122117

@@ -145,7 +140,7 @@ defmodule Mongo.BulkWritesTest do
145140
end
146141

147142
test "create one small document and one too large document", top do
148-
coll = unique_name()
143+
coll = unique_collection()
149144
max_n = (16*1024*1024)
150145

151146
a_line_1k = Enum.reduce(1..1_024, "", fn _, acc -> acc <> "A" end)

test/mongo/connection_test.exs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ defmodule Mongo.ConnectionTest do
154154

155155
test "insert_one flags" do
156156
pid = connect_auth()
157-
coll = unique_name()
157+
coll = unique_collection()
158158

159159
assert {:ok, _} =
160160
Mongo.insert_one(pid, coll, %{foo: 42}, [continue_on_error: true])
@@ -166,7 +166,7 @@ defmodule Mongo.ConnectionTest do
166166

167167
test "find" do
168168
pid = connect_auth()
169-
coll = unique_name()
169+
coll = unique_collection()
170170
Mongo.delete_many(pid, coll, %{})
171171

172172
assert {:ok, _} = Mongo.insert_one(pid, coll, %{foo: 42}, [])
@@ -179,7 +179,7 @@ defmodule Mongo.ConnectionTest do
179179

180180
test "big response" do
181181
pid = connect_auth()
182-
coll = unique_name()
182+
coll = unique_collection()
183183
size = 1024*1024
184184
binary = <<0::size(size)>>
185185

test/mongo/cursor_test.exs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,5 @@
11
defmodule Mongo.CursorTest do
2-
use ExUnit.Case, async: false
3-
4-
setup_all do
5-
assert {:ok, pid} = Mongo.TestConnection.connect
6-
{:ok, [pid: pid]}
7-
end
8-
9-
setup do
10-
{:ok, catcher} = EventCatcher.start_link()
11-
12-
on_exit(fn -> EventCatcher.stop(catcher) end)
13-
14-
[catcher: catcher]
15-
end
2+
use CollectionCase, async: false
163

174
test "checking if killCursor is called properly", c do
185

test/mongo/find_one_test.exs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
defmodule Mongo.FindOneTest do
2-
use ExUnit.Case
32

4-
setup_all do
5-
assert {:ok, pid} = Mongo.TestConnection.connect
6-
Mongo.drop_database(pid)
7-
{:ok, [pid: pid]}
8-
end
3+
use CollectionCase
94

105
test "find_one, using :sort options", %{pid: top} do
116

12-
coll = "find_one_sort"
7+
coll = unique_collection()
8+
139
Mongo.insert_one(top, coll, %{name: "Greta", age: 10})
1410
Mongo.insert_one(top, coll, %{name: "Tom", age: 13})
1511
Mongo.insert_one(top, coll, %{name: "Waldo", age: 5})

test/mongo/retryable_reads_test.exs

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
11
defmodule Mongo.RetryableReadsTest do
2-
use ExUnit.Case
2+
use CollectionCase
33

44
alias Mongo.Error
55
alias Mongo.Session
66

7-
setup_all do
8-
assert {:ok, pid} = Mongo.TestConnection.connect
9-
Mongo.drop_database(pid)
10-
{:ok, [pid: pid]}
11-
end
12-
13-
setup do
14-
{:ok, catcher} = EventCatcher.start_link()
15-
16-
on_exit(fn -> EventCatcher.stop(catcher) end)
17-
18-
[catcher: catcher]
19-
end
20-
217
test "find_one", %{pid: top, catcher: catcher} do
228

23-
coll = "retryable_reads_1"
9+
coll = unique_collection()
10+
2411
Mongo.insert_one(top, coll, %{name: "Greta", age: 10})
2512
Mongo.insert_one(top, coll, %{name: "Tom", age: 13})
2613
Mongo.insert_one(top, coll, %{name: "Waldo", age: 5})
@@ -45,7 +32,7 @@ defmodule Mongo.RetryableReadsTest do
4532

4633
test "find_one in transaction", %{pid: top, catcher: catcher} do
4734

48-
coll = "retryable_reads_2"
35+
coll = unique_collection()
4936
Mongo.insert_one(top, coll, %{name: "Greta", age: 10})
5037
Mongo.insert_one(top, coll, %{name: "Tom", age: 13})
5138
Mongo.insert_one(top, coll, %{name: "Waldo", age: 5})
@@ -71,7 +58,7 @@ defmodule Mongo.RetryableReadsTest do
7158

7259
test "count", %{pid: top, catcher: catcher} do
7360

74-
coll = "retryable_reads_count"
61+
coll = unique_collection()
7562
Mongo.insert_one(top, coll, %{name: "Greta", age: 10})
7663
Mongo.insert_one(top, coll, %{name: "Tom", age: 13})
7764
Mongo.insert_one(top, coll, %{name: "Waldo", age: 5})

test/mongo/retryable_writes_test.exs

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,11 @@
11
defmodule Mongo.RetryableWritesTest do
2-
use ExUnit.Case
2+
use CollectionCase
33

44
alias Mongo.Error
55

6-
setup_all do
7-
assert {:ok, pid} = Mongo.TestConnection.connect
8-
Mongo.drop_database(pid)
9-
{:ok, [pid: pid]}
10-
end
11-
12-
setup do
13-
{:ok, catcher} = EventCatcher.start_link()
14-
15-
on_exit(fn -> EventCatcher.stop(catcher) end)
16-
17-
[catcher: catcher]
18-
end
19-
206
test "retryable writes: insert one", %{pid: top, catcher: catcher} do
217

22-
coll = "retryable_writes_1"
8+
coll = unique_collection()
239

2410
cmd = [
2511
configureFailPoint: "failCommand",
@@ -38,7 +24,7 @@ defmodule Mongo.RetryableWritesTest do
3824

3925
test "retryable writes: delete one", %{pid: top, catcher: catcher} do
4026

41-
coll = "retryable_writes_2"
27+
coll = unique_collection()
4228

4329
Mongo.insert_one(top, coll, %{"name" => "Waldo"})
4430

test/mongo/session_test.exs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ defmodule Mongo.SessionTest do
1818

1919
@tag :mongo_3_6
2020
test "simple session insert", %{top: top} do
21-
coll = unique_name()
21+
coll = unique_collection()
2222

2323
{:ok, session} = Session.start_session(top, :write, [])
2424
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Greta"}, session: session)
@@ -96,7 +96,7 @@ defmodule Mongo.SessionTest do
9696
@tag :mongo_3_6
9797
test "explicit_sessions", %{top: top} do
9898

99-
coll = unique_name()
99+
coll = unique_collection()
100100

101101
{:ok, session} = Session.start_session(top, :write, [])
102102
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Greta"}, session: session)
@@ -263,7 +263,7 @@ defmodule Mongo.SessionTest do
263263
@tag :mongo_4_2
264264
test "check unordered bulk with transaction", %{top: top} do
265265

266-
coll = unique_name()
266+
coll = unique_collection()
267267
Mongo.insert_one(top, coll, %{name: "Wuff"})
268268
Mongo.delete_many(top, coll, %{})
269269

@@ -291,7 +291,7 @@ defmodule Mongo.SessionTest do
291291
@tag :mongo_4_2
292292
test "check invalid unordered bulk with transaction", %{top: top} do
293293

294-
coll = "this-collection-does-not-exists"
294+
coll = unique_collection()
295295

296296
bulk = coll
297297
|> UnorderedBulk.new()
@@ -302,30 +302,34 @@ defmodule Mongo.SessionTest do
302302
|> UnorderedBulk.update_one(%{name: "Tom"}, %{"$set": %{kind: "dog"}})
303303
|> UnorderedBulk.update_one(%{name: "Waldo"}, %{"$set": %{kind: "dog"}})
304304

305-
#{:error, [result|_xs]} =
306-
:error = Session.with_transaction(top, fn opts ->
305+
cmd = [
306+
configureFailPoint: "failCommand",
307+
mode: [times: 1],
308+
data: [errorCode: 3, failCommands: ["insert"]]
309+
]
307310

308-
%BulkWriteResult{errors: errors} = result = BulkWrite.write(top, bulk, opts)
311+
assert {:ok, _} = Mongo.admin_command(top, cmd)
312+
313+
{:error, [result|_xs]} = Session.with_transaction(top, fn opts ->
309314

310-
IO.puts inspect result
315+
%BulkWriteResult{errors: errors} = result = BulkWrite.write(top, bulk, opts)
311316

312317
case Enum.empty?(errors) do
313318
true -> {:ok, result}
314319
false -> {:error, errors}
315320
end
316321

317-
:error
318322
end, w: 1)
319323

320-
# assert 263 == result["code"]
324+
assert 3 == result.code
321325
assert {:ok, 0} == Mongo.count(top, coll, %{})
322326

323327
end
324328

325329
@tag :mongo_4_2
326330
test "check streaming bulk with transaction", %{top: top} do
327331

328-
coll = unique_name()
332+
coll = unique_collection()
329333
Mongo.insert_one(top, coll, %{name: "Wuff"})
330334
Mongo.delete_many(top, coll, %{})
331335

@@ -362,7 +366,7 @@ defmodule Mongo.SessionTest do
362366

363367
@tag :mongo_4_2
364368
test "check ordered bulk with transaction", %{top: top} do
365-
coll = unique_name()
369+
coll = unique_collection()
366370
Mongo.insert_one(top, coll, %{name: "Wuff"})
367371
Mongo.delete_many(top, coll, %{})
368372

0 commit comments

Comments
 (0)