Skip to content

Commit 7e9deb7

Browse files
committed
支持输出 mock 日志
1 parent dedcfbd commit 7e9deb7

File tree

9 files changed

+279
-77
lines changed

9 files changed

+279
-77
lines changed

console/atest-ui/src/views/MockManager.vue

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ API.GetSchema('mock').then((schema) => {
2121
}
2222
});
2323
24+
const logOutput = ref('');
25+
API.GetStream((stream) => {
26+
try {
27+
const data = JSON.parse(stream);
28+
logOutput.value += `${data.result.message}`;
29+
console.log('Received schema:', logOutput.value);
30+
} catch (e) {}
31+
});
32+
2433
interface MockConfig {
2534
Config: string
2635
ConfigAsJSON: string
@@ -107,6 +116,14 @@ items:
107116
:extensions="[jsonSchema(mockschema), jsonComplete, headerComplete]" />
108117
</el-tab-pane>
109118
</el-tabs>
119+
<el-card class="log-output" shadow="hover">
120+
<template #header>
121+
<span>{{ t('label.logs') }}</span>
122+
</template>
123+
<el-scrollbar height="200px" ref="logScrollbar">
124+
<pre style="white-space: pre-wrap; word-break: break-all;">{{ logOutput }}</pre>
125+
</el-scrollbar>
126+
</el-card>
110127
</div>
111128
</template>
112129

console/atest-ui/src/views/net.ts

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,38 @@ function GetMockConfig(callback: (d: any) => void) {
733733
.then(DefaultResponseProcess)
734734
.then(callback)
735735
}
736-
736+
function GetStream(callback: (d: any) => void, errHandle?: (e: any) => void | null) {
737+
const requestOptions = {
738+
headers: {
739+
'X-Auth': getToken()
740+
}
741+
}
742+
fetch(`/api/v1/mock/log`, {
743+
...requestOptions,
744+
headers: {
745+
...requestOptions.headers,
746+
'Accept': 'text/event-stream'
747+
}
748+
})
749+
.then((response: any) => {
750+
if (response.ok && response.body) {
751+
const reader = response.body.getReader();
752+
const decoder = new TextDecoder();
753+
const read = () => {
754+
reader.read().then(({ done, value }) => {
755+
if (done) return;
756+
const chunk = decoder.decode(value, { stream: true });
757+
callback(chunk);
758+
read();
759+
});
760+
};
761+
read();
762+
} else {
763+
return DefaultResponseProcess(response);
764+
}
765+
})
766+
.catch(emptyOrDefault(errHandle));
767+
}
737768
function getToken() {
738769
const token = sessionStorage.getItem('token')
739770
if (!token) {
@@ -944,7 +975,7 @@ export const API = {
944975
FunctionsQuery,
945976
GetSecrets, DeleteSecret, CreateOrUpdateSecret,
946977
GetSuggestedAPIs, GetSwaggers,
947-
ReloadMockServer, GetMockConfig, SBOM, DataQuery, DataQueryAsync,
978+
ReloadMockServer, GetMockConfig, GetStream, SBOM, DataQuery, DataQueryAsync,
948979
GetThemes, GetTheme, GetBinding,
949980
getToken
950981
}

pkg/mock/in_memory.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ func (s *inMemoryServer) WithTLS(certFile, keyFile string) DynamicServer {
8989
return s
9090
}
9191

92+
func (s *inMemoryServer) WithLogWriter(writer io.Writer) DynamicServer {
93+
if writer != nil {
94+
memLogger = memLogger.WithNameAndWriter("stream", writer)
95+
}
96+
return s
97+
}
98+
9299
func (s *inMemoryServer) GetTLS() (string, string) {
93100
return s.certFile, s.keyFile
94101
}
@@ -268,7 +275,7 @@ func (s *inMemoryServer) EnableMetrics() {
268275
func (s *inMemoryServer) startObject(obj Object) {
269276
// create a simple CRUD server
270277
s.mux.HandleFunc("/"+obj.Name, func(w http.ResponseWriter, req *http.Request) {
271-
fmt.Println("mock server received request", req.URL.Path)
278+
memLogger.Info("mock server received request", "path", req.URL.Path)
272279
s.metrics.RecordRequest(req.URL.Path)
273280
method := req.Method
274281
w.Header().Set(util.ContentType, util.JSON)

pkg/mock/server.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ limitations under the License.
1616
package mock
1717

1818
import (
19+
"io"
1920
"net/http"
2021
)
2122

@@ -27,6 +28,7 @@ type DynamicServer interface {
2728
Start(reader Reader, prefix string) error
2829
SetupHandler(reader Reader, prefix string) (http.Handler, error)
2930
WithTLS(certFile, keyFile string) DynamicServer
31+
WithLogWriter(writer io.Writer) DynamicServer
3032
GetTLS() (certFile, keyFile string)
3133
Stop() error
3234
GetPort() string

pkg/server/remote_server.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,7 @@ type mockServerController struct {
13771377
mockWriter mock.ReaderAndWriter
13781378
loader mock.Loadable
13791379
reader mock.Reader
1380+
logData chan string
13801381
prefix string
13811382
combinePort int
13821383
}
@@ -1386,6 +1387,7 @@ func NewMockServerController(mockWriter mock.ReaderAndWriter, loader mock.Loadab
13861387
mockWriter: mockWriter,
13871388
loader: loader,
13881389
prefix: "/mock/server",
1390+
logData: make(chan string, 100),
13891391
combinePort: combinePort,
13901392
}
13911393
}
@@ -1404,6 +1406,7 @@ func (s *mockServerController) Reload(ctx context.Context, in *MockConfig) (repl
14041406

14051407
server := mock.NewInMemoryServer(ctx, int(in.GetPort())).WithTLS(dServer.GetTLS())
14061408
server.Start(s.mockWriter, in.Prefix)
1409+
server.WithLogWriter(s)
14071410
s.loader = server
14081411
}
14091412
err = s.loader.Load()
@@ -1421,6 +1424,22 @@ func (s *mockServerController) GetConfig(ctx context.Context, in *Empty) (reply
14211424
}
14221425
return
14231426
}
1427+
func (s *mockServerController) LogWatch(e *Empty, logServer Mock_LogWatchServer) (err error) {
1428+
for msg := range s.logData {
1429+
logServer.Send(&CommonResult{
1430+
Success: true,
1431+
Message: msg,
1432+
})
1433+
}
1434+
return
1435+
}
1436+
func (s *mockServerController) Write(p []byte) (n int, err error) {
1437+
select {
1438+
case s.logData <- fmt.Sprintf("%s: %s", time.Now().Format(time.RFC3339), string(p)):
1439+
default:
1440+
}
1441+
return
1442+
}
14241443

14251444
func (s *server) getLoaderByStoreName(storeName string) (loader testing.Writer, err error) {
14261445
var store *testing.Store

pkg/server/server.pb.go

Lines changed: 80 additions & 73 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)