Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/src/main/java/io/keploy/service/GrpcService.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class GrpcService {
private static final Logger logger = LogManager.getLogger(GrpcService.class);

private static final String CROSS = new String(Character.toChars(0x274C));
private static RegressionServiceGrpc.RegressionServiceBlockingStub blockingStub = null;
public static RegressionServiceGrpc.RegressionServiceBlockingStub blockingStub = null;
private static Keploy k = null;
public static ManagedChannel channel;
// public static OkHttpClient client;
Expand Down
25 changes: 25 additions & 0 deletions api/src/main/java/io/keploy/service/mock/Config.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package io.keploy.service.mock;

import io.keploy.regression.Mode;
import io.keploy.regression.context.Context;
import io.keploy.regression.context.Kcontext;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class Config {

public static Mode mode;

public static String Name = "";

public static Kcontext CTX = Context.getCtx();

public static String Path = "";

public static Boolean Overwrite = false;
public static Map<String, Boolean> MockId = Collections.synchronizedMap(new HashMap<>());
public static String MockPath = "";

}
57 changes: 57 additions & 0 deletions api/src/main/java/io/keploy/service/mock/MockLib.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package io.keploy.service.mock;

import io.keploy.grpc.stubs.Service;
import io.keploy.regression.context.Context;
import io.keploy.regression.context.Kcontext;
import io.keploy.service.GrpcService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.List;

import static io.keploy.service.GrpcService.blockingStub;

public class MockLib {
private static final Logger logger = LogManager.getLogger(MockLib.class);


public MockLib() {
Kcontext kctx = Context.getCtx();
new GrpcService();
}


public static boolean StartRecordingMocks(Kcontext kctx, String path, String mode, String name, Boolean overWrite) {
Service.StartMockReq startMockReq = Service.StartMockReq.newBuilder().setMode(mode).setPath(path).build();
Service.StartMockResp startMockResp = blockingStub.startMocking(startMockReq);
if (startMockResp == null) { // TODO - check how to handle this error
logger.error("Failed to make StartMocking grpc call to keploy server" + name + " mock");
return false;
}
return startMockResp.getExists();
}

public static List<Service.Mock> GetAllMocks(Service.GetMockReq getMockReq) {
final Service.getMockResp resp = blockingStub.getMocks(getMockReq);
if (resp != null) {
return resp.getMocksList();
}

logger.error("returned nil as array mocks from keploy server");
return null;
}

public static boolean PutMock(String path, Service.Mock mock) {

Service.PutMockReq putMockReq = Service.PutMockReq.newBuilder().setMock(mock).setPath(path).build();
Service.PutMockResp putMockResp = blockingStub.putMock(putMockReq);
if (putMockResp == null) { // check iska error handle
logger.error("Failed to call the putMock method");
return false;
}
return true;
}



}
1 change: 0 additions & 1 deletion common/src/main/java/io/keploy/utils/ProcessSQL.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ public static Service.Table ProcessDep(Map<String, String> meta, Service.Table t
Service.Mock.SpecSchema specSchema = null;

specSchema = Service.Mock.SpecSchema.newBuilder().putAllMetadata(meta).setInt(id).setTable(table).setType("TABLE").build();
// }

Service.Mock mock = Service.Mock.newBuilder()
.setVersion(Mock.Version.V1_BETA1.value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import io.keploy.regression.Mode;
import io.keploy.regression.context.Context;
import io.keploy.regression.context.Kcontext;
import io.keploy.service.GrpcService;
import io.keploy.service.mock.Config;
import io.keploy.service.mock.MockLib;
import io.keploy.utils.HttpStatusReasons;
import net.bytebuddy.implementation.bind.annotation.*;
import okhttp3.*;
Expand Down Expand Up @@ -216,6 +219,17 @@ public static Object execute(
.setSpec(specSchema)
.build();

// for mock library
new GrpcService(); // to initialize the grpcClient
if (GrpcService.blockingStub != null && kctx.getFileExport() && !Config.MockId.containsKey(kctx.getTestId())) {
final boolean recorded = MockLib.PutMock(Config.MockPath, httpMock);
String CAPTURE = "\uD83D\uDFE0";
if (recorded) {
logger.info(CAPTURE + " Captured the mocked outputs for Http dependency call with meta: {}", meta);
}
return response;
}

kctx.getMock().add(httpMock);
return responseObject;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
import io.keploy.grpc.stubs.Service;
import io.keploy.regression.KeployInstance;
import io.keploy.regression.Mock;
import io.keploy.regression.Mode;
import io.keploy.regression.context.Context;
import io.keploy.regression.context.Kcontext;
import io.keploy.regression.Mode;
import io.keploy.regression.keploy.Keploy;
import io.keploy.service.GrpcService;
import io.keploy.service.mock.Config;
import io.keploy.service.mock.MockLib;
import io.keploy.utils.MagicBytes;
import io.keploy.utils.MultipartContent;
import io.keploy.utils.Utility;
Expand Down Expand Up @@ -257,6 +259,25 @@ public static CloseableHttpResponse doProceed(@Origin Method method, @SuperCall
.setSpec(specSchema)
.build();

// if internal.GetGrpcClient() != nil && kctx.FileExport && internal.MockId.Unique(kctx.TestID) {
// recorded := internal.PutMock(context.Background(), internal.MockPath, httpMock)
// if recorded {
// fmt.Println("🟠 Captured the mocked outputs for Http dependency call with meta: ", meta)
// }
// return resp, err
// }

// for mock library
new GrpcService(); // to initialize the grpcClient
if (GrpcService.blockingStub != null && kctx.getFileExport() && !Config.MockId.containsKey(kctx.getTestId())) {
final boolean recorded = MockLib.PutMock(Config.MockPath, httpMock);
String CAPTURE = "\uD83D\uDFE0";
if (recorded) {
logger.info(CAPTURE + " Captured the mocked outputs for Http dependency call with meta: {}", meta);
}
return response;
}

kctx.getMock().add(httpMock);
return response;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
import io.keploy.regression.context.Kcontext;
import io.keploy.regression.Mock;
import io.keploy.regression.Mode;
import io.keploy.service.GrpcService;
import io.keploy.service.mock.Config;
import io.keploy.service.mock.MockLib;
import io.keploy.utils.HttpStatusReasons;
import okhttp3.*;
import okio.Buffer;
Expand Down Expand Up @@ -161,6 +164,17 @@ public Response intercept(Chain chain) throws IOException {
.setSpec(specSchema)
.build();

// for mock library
new GrpcService(); // to initialize the grpcClient
if (GrpcService.blockingStub != null && kctx.getFileExport() && !Config.MockId.containsKey(kctx.getTestId())) {
final boolean recorded = MockLib.PutMock(Config.MockPath, httpMock);
String CAPTURE = "\uD83D\uDFE0";
if (recorded) {
logger.info(CAPTURE + " Captured the mocked outputs for Http dependency call with meta: {}", meta);
}
return response;
}

kctx.getMock().add(httpMock);
return response;
default:
Expand Down