Skip to content

Commit a906ec7

Browse files
committed
performance improvement for reset MongoDB
1 parent 39c0c3e commit a906ec7

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

jdk_11_gradle/em/embedded/rest/reservations-api/src/main/java/em/embedded/reservationsapi/EmbeddedEvoMasterController.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package em.embedded.reservationsapi;
22

3+
import com.mongodb.BasicDBObject;
34
import com.mongodb.client.MongoClient;
45
import com.mongodb.client.MongoClients;
56
import com.mongodb.client.MongoCollection;
7+
import com.mongodb.client.MongoDatabase;
68
import org.bson.Document;
79
import org.bson.types.ObjectId;
810
import org.evomaster.client.java.controller.EmbeddedSutController;
@@ -124,11 +126,17 @@ public String getPackagePrefixesToCover() {
124126

125127
@Override
126128
public void resetStateOfSUT() {
127-
mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop();
128129

129-
mongoClient.getDatabase(MONGODB_DATABASE_NAME).createCollection("users");
130+
MongoDatabase db = mongoClient.getDatabase(MONGODB_DATABASE_NAME);
130131

131-
MongoCollection<Document> users = mongoClient.getDatabase(MONGODB_DATABASE_NAME).getCollection("users");
132+
//THIS WAS VERY EXPENSIVE for this API... might be due to transactions or different Docker image?
133+
//db.drop();
134+
135+
for(String name: db.listCollectionNames()){
136+
db.getCollection(name).deleteMany(new BasicDBObject());
137+
}
138+
139+
MongoCollection<Document> users = db.getCollection("users");
132140
users.insertMany(Arrays.asList(
133141
new Document()
134142
.append("_id", new ObjectId())
@@ -152,8 +160,6 @@ public void resetStateOfSUT() {
152160
.append("password", hashedPassword)
153161
.append("role", "ADMIN")
154162
));
155-
156-
157163
}
158164

159165
@Override
@@ -164,7 +170,6 @@ public List<DbSpecification> getDbSpecifications() {
164170

165171
@Override
166172
public List<AuthenticationDto> getInfoForAuthentication() {
167-
168173
return Arrays.asList(
169174
new AuthenticationDto() {{
170175
name = "admin";

jdk_11_gradle/em/external/rest/reservations-api/src/main/java/em/external/reservationsapi/ExternalEvoMasterController.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package em.external.reservationsapi;
22

3+
import com.mongodb.BasicDBObject;
34
import com.mongodb.client.MongoClient;
45
import com.mongodb.client.MongoClients;
56
import com.mongodb.client.MongoCollection;
7+
import com.mongodb.client.MongoDatabase;
68
import org.bson.Document;
79
import org.bson.types.ObjectId;
810
import org.evomaster.client.java.controller.ExternalSutController;
@@ -155,11 +157,16 @@ public void postStart() {
155157

156158
@Override
157159
public void resetStateOfSUT() {
158-
mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop();
160+
MongoDatabase db = mongoClient.getDatabase(MONGODB_DATABASE_NAME);
159161

160-
mongoClient.getDatabase(MONGODB_DATABASE_NAME).createCollection("users");
162+
//THIS WAS VERY EXPENSIVE
163+
//db.drop();
161164

162-
MongoCollection<Document> users = mongoClient.getDatabase(MONGODB_DATABASE_NAME).getCollection("users");
165+
for(String name: db.listCollectionNames()){
166+
db.getCollection(name).deleteMany(new BasicDBObject());
167+
}
168+
169+
MongoCollection<Document> users = db.getCollection("users");
163170
users.insertMany(Arrays.asList(
164171
new Document()
165172
.append("_id", new ObjectId())

0 commit comments

Comments
 (0)