Frame-by-frame IMQ with an outgoing filter; HTTP interceptor hook
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
2551888ed6
commit
2190230f81
6 files changed
+485
-24
No files matched your search
@@ -36,12 +36,12 @@ func TestReaderSplitsFrames(t *testing.T) {
|
||||
}
|
||||
got = append(got, frames...)
|
||||
}
|
||||
want := []Frame{{1302, 5}, {3103, 300}, {1301, 0}}
|
||||
want := []Frame{{1302, 5, []byte("hello")}, {3103, 300, bytes.Repeat([]byte{1}, 300)}, {1301, 0, nil}}
|
||||
if len(got) != len(want) {
|
||||
t.Fatalf("got %v, want %v", got, want)
|
||||
}
|
||||
for i := range want {
|
||||
if got[i] != want[i] {
|
||||
if got[i].Type != want[i].Type || got[i].Size != want[i].Size || !bytes.Equal(got[i].Data, want[i].Data) {
|
||||
t.Fatalf("got %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
@@ -63,3 +63,21 @@ func TestTypeName(t *testing.T) {
|
||||
t.Fatal(TypeName(3104), TypeName(7))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendMessageRoundTrip(t *testing.T) {
|
||||
m := SendMessage{OpID: 300, Queue: "/chat/1", Mount: "messages", Message: []byte(`{"message": "*use 80 1"}`)}
|
||||
data := m.Marshal()
|
||||
got, err := ParseSendMessage(data)
|
||||
if err != nil || got.OpID != 300 || got.Queue != "/chat/1" || got.Mount != "messages" || string(got.Message) != string(m.Message) {
|
||||
t.Fatalf("%+v %v", got, err)
|
||||
}
|
||||
// A frame of it reads back as one frame with the same data.
|
||||
var r Reader
|
||||
frames, err := r.Write(EncodeFrame(C2gSendMessage, data))
|
||||
if err != nil || len(frames) != 1 || frames[0].Type != C2gSendMessage || !bytes.Equal(frames[0].Data, data) {
|
||||
t.Fatalf("%v %v", frames, err)
|
||||
}
|
||||
if _, err := ParseSendMessage(Result(1, 0)); err == nil {
|
||||
t.Fatal("a G2cResult parsed as a C2gSendMessage")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user