Skip to content

Commit 86b65bf

Browse files
authored
(DOCSP-29415): Add Run Test GH Action (#83)
# Pull Request Info [PR Reviewing Guidelines](https://github.com/mongodb/docs-java/blob/master/REVIEWING.md) Add GH action to run the unit test suite JIRA - https://jira.mongodb.org/browse/DOCSP-29415 Staging - https://docs-mongodbcom-staging.corp.mongodb.com/drivers/docsworker-xlarge/NNNNN/ ## Self-Review Checklist - [ ] Is this free of any warnings or errors in the RST? - [ ] Did you run a spell-check? - [ ] Did you run a grammar-check? - [ ] Are all the links working?
1 parent 1c02921 commit 86b65bf

31 files changed

+168
-99
lines changed

.github/workflows/kotlin.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Kotlin Example Tests
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'examples/**'
7+
8+
defaults:
9+
run:
10+
working-directory: examples # The working directory path
11+
12+
jobs:
13+
build:
14+
name: Run Kotlin Example Tests
15+
runs-on: macos-latest
16+
17+
steps:
18+
- uses: actions/checkout@v3
19+
- name: Set up JDK 11
20+
uses: actions/setup-java@v3
21+
with:
22+
distribution: 'zulu'
23+
java-version: 11
24+
- name: Run Kotlin tests
25+
run: ./gradlew test --stacktrace --info
26+
env:
27+
CI: true
28+
CONNECTION_URI: ${{ secrets.CONNECTION_URI }}

examples/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,22 @@ mlaunch start
4646
```
4747

4848
Refer to the mlaunch docs for install info and other commands.
49+
50+
## Running tests
51+
52+
All tests in the project are automatically run on PRs as a GitHub action.
53+
54+
To manually run tests, run the `test` task using the Gradle wrapper.
55+
Use the `--tests` flag to run specific test files or tests.
56+
57+
```
58+
./gradlew :shared:test
59+
```
60+
61+
```
62+
./gradlew :shared:test --tests ClassName
63+
```
64+
65+
```
66+
./gradlew :shared:test --tests ClassName.individualTestName
67+
```
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package config
2+
3+
import io.github.cdimascio.dotenv.dotenv
4+
5+
data class Config(val connectionUri: String)
6+
7+
fun getConfig(): Config {
8+
val ci = System.getenv("CI")
9+
if(ci == "true") {
10+
val connectionUri = System.getenv("CONNECTION_URI")
11+
return Config(System.getenv("CONNECTION_URI"))
12+
}
13+
val env = dotenv()
14+
val connectionUri = env["MONGODB_CONNECTION_URI"]
15+
return Config(connectionUri)
16+
}

examples/src/test/kotlin/AggregationTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.mongodb.client.model.Aggregates
55
import com.mongodb.client.model.Filters
66
import com.mongodb.client.model.Projections
77
import com.mongodb.kotlin.client.coroutine.MongoClient
8-
import io.github.cdimascio.dotenv.dotenv
8+
import config.getConfig
99
import kotlinx.coroutines.flow.toList
1010
import kotlinx.coroutines.runBlocking
1111
import org.bson.Document
@@ -34,8 +34,8 @@ class AggregationTest {
3434
// :snippet-end:
3535

3636
companion object {
37-
val dotenv = dotenv()
38-
private val mongoClient = MongoClient.create(dotenv["MONGODB_CONNECTION_URI"])
37+
val config = getConfig()
38+
private val mongoClient = MongoClient.create(config.connectionUri)
3939
private val database = mongoClient.getDatabase("aggregation")
4040
val collection = database.getCollection<Restaurant>("restaurants")
4141

examples/src/test/kotlin/BuildersTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import com.mongodb.*
33
import com.mongodb.client.model.Filters.*
44
import com.mongodb.client.model.Projections.*
55
import com.mongodb.kotlin.client.coroutine.MongoClient
6-
import io.github.cdimascio.dotenv.dotenv
6+
import config.getConfig
77
import kotlinx.coroutines.flow.first
88
import kotlinx.coroutines.runBlocking
99
import org.bson.BsonObjectId
@@ -30,8 +30,8 @@ internal class BuildersTest {
3030
// :snippet-end:
3131

3232
companion object {
33-
val dotenv = dotenv()
34-
val client = MongoClient.create(dotenv["MONGODB_CONNECTION_URI"])
33+
val config = getConfig()
34+
val client = MongoClient.create(config.connectionUri)
3535
val database = client.getDatabase("marketing")
3636
val collection = database.getCollection<User>("users")
3737

examples/src/test/kotlin/BulkTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import com.mongodb.MongoBulkWriteException
33
import com.mongodb.client.model.*
44
import com.mongodb.kotlin.client.coroutine.MongoClient
5-
import io.github.cdimascio.dotenv.dotenv
5+
import config.getConfig
66
import kotlinx.coroutines.flow.toList
77
import kotlinx.coroutines.runBlocking
88
import org.bson.codecs.pojo.annotations.BsonId
@@ -23,8 +23,8 @@ data class SampleDoc(
2323
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
2424
internal class BulkTest {
2525
companion object {
26-
val dotenv = dotenv()
27-
val client = MongoClient.create(dotenv["MONGODB_CONNECTION_URI"])
26+
val config = getConfig()
27+
val client = MongoClient.create(config.connectionUri)
2828
val database = client.getDatabase("sample_db")
2929
val collection = database.getCollection<SampleDoc>("sample_docs")
3030

examples/src/test/kotlin/ChangeStreamsTest.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.mongodb.client.model.changestream.FullDocumentBeforeChange
99
import com.mongodb.client.model.changestream.OperationType
1010
import com.mongodb.kotlin.client.coroutine.MongoClient
1111
import com.mongodb.kotlin.client.coroutine.MongoCollection
12-
import io.github.cdimascio.dotenv.dotenv
12+
import config.getConfig
1313
import kotlinx.coroutines.delay
1414
import kotlinx.coroutines.launch
1515
import kotlinx.coroutines.runBlocking
@@ -27,8 +27,8 @@ import kotlin.test.*
2727
internal class ChangeStreamsTest {
2828

2929
companion object {
30-
private val dotenv = dotenv()
31-
private val client = MongoClient.create(dotenv["MONGODB_CONNECTION_URI"])
30+
private val config = getConfig()
31+
private val client = MongoClient.create(config.connectionUri)
3232
val database = client.getDatabase("censusData")
3333

3434
@AfterAll
@@ -136,8 +136,9 @@ internal class ChangeStreamsTest {
136136

137137
}
138138

139-
// NOTE: will not work with a shared M0 cluster. Must have a local cluster with a replica set or >=M10 on Atlas.
140-
@Test
139+
// NOTE: Test is being ignored because it will not work with a shared M0 cluster.
140+
// Must have a local cluster with a replica set or >=M10 on Atlas to successfully run.
141+
@Ignore
141142
fun createCollectionWithPreAndPostImagesTest() = runBlocking {
142143
val collectionName = "myChangeStreamCollection"
143144
// :snippet-start: create-collection-with-pre-and-post-images
@@ -174,8 +175,9 @@ internal class ChangeStreamsTest {
174175

175176
}
176177

177-
// NOTE: will not work with a shared M0 cluster. Must have a local cluster with a replica set or >=M10 on Atlas.
178-
@Test
178+
// NOTE: Test is being ignored because it will not work with a shared M0 cluster.
179+
// Must have a local cluster with a replica set or >=M10 on Atlas to successfully run.
180+
@Ignore
179181
fun preImageConfigurationTest() = runBlocking {
180182
val collectionName = "myChangeStreamCollection2"
181183
val createdCollection = database.getCollection<Document>(collectionName)

examples/src/test/kotlin/ChangeTest.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
12
import com.mongodb.client.model.Filters
23
import com.mongodb.client.model.Updates
34
import com.mongodb.kotlin.client.coroutine.MongoClient
4-
import io.github.cdimascio.dotenv.dotenv
5+
import config.getConfig
56
import kotlinx.coroutines.runBlocking
67
import org.bson.codecs.pojo.annotations.BsonId
78
import org.junit.jupiter.api.AfterAll
@@ -22,8 +23,8 @@ internal class ChangeTest {
2223
// :snippet-end:
2324

2425
companion object {
25-
val dotenv = dotenv()
26-
val client = MongoClient.create(dotenv["MONGODB_CONNECTION_URI"])
26+
val config = getConfig()
27+
val client = MongoClient.create(config.connectionUri)
2728
val database = client.getDatabase("paint_store")
2829
val collection = database.getCollection<PaintOrder>("paint_order")
2930

examples/src/test/kotlin/CompoundTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import com.mongodb.client.model.*
33
import com.mongodb.client.model.Sorts.*
44
import com.mongodb.kotlin.client.coroutine.MongoClient
5-
import io.github.cdimascio.dotenv.dotenv
5+
import config.getConfig
66
import kotlinx.coroutines.flow.first
77
import kotlinx.coroutines.flow.firstOrNull
88
import kotlinx.coroutines.runBlocking
@@ -33,8 +33,8 @@ internal class CompoundOperationsTest {
3333
)
3434
// :snippet-end:
3535
companion object {
36-
val dotenv = dotenv()
37-
val client = MongoClient.create(dotenv["MONGODB_CONNECTION_URI"])
36+
val config = getConfig()
37+
val client = MongoClient.create(config.connectionUri)
3838
val database = client.getDatabase("compound_operations")
3939
val collection = database.getCollection<FoodOrder>("example")
4040
val hotelCollection = database.getCollection<HotelRoom>("rooms")

examples/src/test/kotlin/ConnectTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
import com.mongodb.*
33
import com.mongodb.kotlin.client.coroutine.MongoClient
4-
import io.github.cdimascio.dotenv.dotenv
4+
import config.getConfig
55
import kotlinx.coroutines.runBlocking
66
import org.bson.BsonInt64
77
import org.bson.Document
@@ -20,8 +20,8 @@ import kotlin.test.*
2020
internal class ConnectionTest {
2121

2222
companion object {
23-
private val dotenv = dotenv()
24-
val CONNECTION_URI_PLACEHOLDER = dotenv["MONGODB_CONNECTION_URI"]
23+
private val config = getConfig()
24+
val CONNECTION_URI_PLACEHOLDER = config.connectionUri
2525
var higherScopedClient: MongoClient? = null
2626

2727
@AfterAll
@@ -63,7 +63,7 @@ internal class ConnectionTest {
6363
}
6464
// :snippet-end:
6565
higherScopedClient = mongoClient
66-
assertEquals(1.0, higherScopedCommandResult["ok"])
66+
assertEquals(1, higherScopedCommandResult["ok"])
6767
}
6868

6969
@Test

0 commit comments

Comments
 (0)