本文整理汇总了Golang中github.com/juju/juju/rpc/jsoncodec.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestWriteMessageLogsRequests
func (*suite) TestWriteMessageLogsRequests(c *gc.C) {
codecLogger := loggo.GetLogger("juju.rpc.jsoncodec")
defer codecLogger.SetLogLevel(codecLogger.LogLevel())
codecLogger.SetLogLevel(loggo.TRACE)
codec := jsoncodec.New(&testConn{})
h := rpc.Header{
RequestId: 1,
Request: rpc.Request{
Type: "foo",
Id: "id",
Action: "frob",
},
}
// Check that logging is off by default
err := codec.WriteMessage(&h, value{X: "param"})
c.Assert(err, gc.IsNil)
c.Assert(c.GetTestLog(), gc.Matches, "")
// Check that we see a log message when we switch logging on.
codec.SetLogging(true)
err = codec.WriteMessage(&h, value{X: "param"})
c.Assert(err, gc.IsNil)
msg := `{"RequestId":1,"Type":"foo","Id":"id","Request":"frob","Params":{"X":"param"}}`
c.Assert(c.GetTestLog(), gc.Matches, `.*TRACE juju.rpc.jsoncodec -> `+regexp.QuoteMeta(msg)+`\n`)
// Check that we can switch it off again
codec.SetLogging(false)
err = codec.WriteMessage(&h, value{X: "param"})
c.Assert(err, gc.IsNil)
c.Assert(c.GetTestLog(), gc.Matches, `.*TRACE juju.rpc.jsoncodec -> `+regexp.QuoteMeta(msg)+`\n`)
}
示例2: TestReadHeaderLogsRequests
func (*suite) TestReadHeaderLogsRequests(c *gc.C) {
codecLogger := loggo.GetLogger("juju.rpc.jsoncodec")
defer codecLogger.SetLogLevel(codecLogger.LogLevel())
codecLogger.SetLogLevel(loggo.TRACE)
msg := `{"RequestId":1,"Type": "foo","Id": "id","Request":"frob","Params":{"X":"param"}}`
codec := jsoncodec.New(&testConn{
readMsgs: []string{msg, msg, msg},
})
// Check that logging is off by default
var h rpc.Header
err := codec.ReadHeader(&h)
c.Assert(err, gc.IsNil)
c.Assert(c.GetTestLog(), gc.Matches, "")
// Check that we see a log message when we switch logging on.
codec.SetLogging(true)
err = codec.ReadHeader(&h)
c.Assert(err, gc.IsNil)
c.Assert(c.GetTestLog(), gc.Matches, ".*TRACE juju.rpc.jsoncodec <- "+regexp.QuoteMeta(msg)+`\n`)
// Check that we can switch it off again
codec.SetLogging(false)
err = codec.ReadHeader(&h)
c.Assert(err, gc.IsNil)
c.Assert(c.GetTestLog(), gc.Matches, ".*TRACE juju.rpc.jsoncodec <- "+regexp.QuoteMeta(msg)+`\n`)
}
示例3: TestWrite
func (*suite) TestWrite(c *gc.C) {
for i, test := range writeTests {
c.Logf("test %d", i)
var conn testConn
codec := jsoncodec.New(&conn)
err := codec.WriteMessage(test.hdr, test.body)
c.Assert(err, gc.IsNil)
c.Assert(conn.writeMsgs, gc.HasLen, 1)
assertJSONEqual(c, conn.writeMsgs[0], test.expect)
}
}
示例4: TestErrorAfterClose
func (*suite) TestErrorAfterClose(c *gc.C) {
conn := &testConn{
err: errors.New("some error"),
}
codec := jsoncodec.New(conn)
var hdr rpc.Header
err := codec.ReadHeader(&hdr)
c.Assert(err, gc.ErrorMatches, "error receiving message: some error")
err = codec.Close()
c.Assert(err, gc.IsNil)
c.Assert(conn.closed, gc.Equals, true)
err = codec.ReadHeader(&hdr)
c.Assert(err, gc.Equals, io.EOF)
}
示例5: TestConcurrentSetLoggingAndRead
func (*suite) TestConcurrentSetLoggingAndRead(c *gc.C) {
// If log messages are not set atomically, this
// test will fail when run under the race detector.
msg := `{"RequestId":1,"Type": "foo","Id": "id","Request":"frob","Params":{"X":"param"}}`
codec := jsoncodec.New(&testConn{
readMsgs: []string{msg, msg, msg},
})
done := make(chan struct{})
go func() {
codec.SetLogging(true)
done <- struct{}{}
}()
var h rpc.Header
err := codec.ReadHeader(&h)
c.Assert(err, gc.IsNil)
<-done
}
示例6: TestConcurrentSetLoggingAndWrite
func (*suite) TestConcurrentSetLoggingAndWrite(c *gc.C) {
// If log messages are not set atomically, this
// test will fail when run under the race detector.
codec := jsoncodec.New(&testConn{})
done := make(chan struct{})
go func() {
codec.SetLogging(true)
done <- struct{}{}
}()
h := rpc.Header{
RequestId: 1,
Request: rpc.Request{
Type: "foo",
Id: "id",
Action: "frob",
},
}
err := codec.WriteMessage(&h, value{X: "param"})
c.Assert(err, gc.IsNil)
<-done
}
示例7: TestRead
func (*suite) TestRead(c *gc.C) {
for i, test := range readTests {
c.Logf("test %d", i)
codec := jsoncodec.New(&testConn{
readMsgs: []string{test.msg},
})
var hdr rpc.Header
err := codec.ReadHeader(&hdr)
c.Assert(err, gc.IsNil)
c.Assert(hdr, gc.DeepEquals, test.expectHdr)
c.Assert(hdr.IsRequest(), gc.Equals, test.expectHdr.IsRequest())
body := reflect.New(reflect.ValueOf(test.expectBody).Type().Elem()).Interface()
err = codec.ReadBody(body, test.expectHdr.IsRequest())
c.Assert(err, gc.IsNil)
c.Assert(body, gc.DeepEquals, test.expectBody)
err = codec.ReadHeader(&hdr)
c.Assert(err, gc.Equals, io.EOF)
}
}
示例8: TestRead
func (*suite) TestRead(c *gc.C) {
for i, test := range []struct {
msg string
expectHdr rpc.Header
expectBody interface{}
}{{
msg: `{"RequestId": 1, "Type": "foo", "Id": "id", "Request": "frob", "Params": {"X": "param"}}`,
expectHdr: rpc.Header{
RequestId: 1,
Request: rpc.Request{
Type: "foo",
Id: "id",
Action: "frob",
},
},
expectBody: &value{X: "param"},
}, {
msg: `{"RequestId": 2, "Error": "an error", "ErrorCode": "a code"}`,
expectHdr: rpc.Header{
RequestId: 2,
Error: "an error",
ErrorCode: "a code",
},
expectBody: new(map[string]interface{}),
}, {
msg: `{"RequestId": 3, "Response": {"X": "result"}}`,
expectHdr: rpc.Header{
RequestId: 3,
},
expectBody: &value{X: "result"},
}, {
msg: `{"RequestId": 4, "Type": "foo", "Version": 2, "Id": "id", "Request": "frob", "Params": {"X": "param"}}`,
expectHdr: rpc.Header{
RequestId: 4,
Request: rpc.Request{
Type: "foo",
Version: 2,
Id: "id",
Action: "frob",
},
},
expectBody: &value{X: "param"},
}, {
msg: `{"request-id": 1, "type": "foo", "id": "id", "request": "frob", "params": {"X": "param"}}`,
expectHdr: rpc.Header{
RequestId: 1,
Request: rpc.Request{
Type: "foo",
Id: "id",
Action: "frob",
},
Version: 1,
},
expectBody: &value{X: "param"},
}, {
msg: `{"request-id": 2, "error": "an error", "error-code": "a code"}`,
expectHdr: rpc.Header{
RequestId: 2,
Error: "an error",
ErrorCode: "a code",
Version: 1,
},
expectBody: new(map[string]interface{}),
}, {
msg: `{"request-id": 3, "response": {"X": "result"}}`,
expectHdr: rpc.Header{
RequestId: 3,
Version: 1,
},
expectBody: &value{X: "result"},
}, {
msg: `{"request-id": 4, "type": "foo", "version": 2, "id": "id", "request": "frob", "params": {"X": "param"}}`,
expectHdr: rpc.Header{
RequestId: 4,
Request: rpc.Request{
Type: "foo",
Version: 2,
Id: "id",
Action: "frob",
},
Version: 1,
},
expectBody: &value{X: "param"},
}} {
c.Logf("test %d", i)
codec := jsoncodec.New(&testConn{
readMsgs: []string{test.msg},
})
var hdr rpc.Header
err := codec.ReadHeader(&hdr)
c.Assert(err, jc.ErrorIsNil)
c.Assert(hdr, gc.DeepEquals, test.expectHdr)
c.Assert(hdr.IsRequest(), gc.Equals, test.expectHdr.IsRequest())
body := reflect.New(reflect.ValueOf(test.expectBody).Type().Elem()).Interface()
err = codec.ReadBody(body, test.expectHdr.IsRequest())
c.Assert(err, jc.ErrorIsNil)
c.Assert(body, gc.DeepEquals, test.expectBody)
//.........这里部分代码省略.........
示例9: TestWrite
func (*suite) TestWrite(c *gc.C) {
for i, test := range []struct {
hdr *rpc.Header
body interface{}
isRequest bool
expect string
}{{
hdr: &rpc.Header{
RequestId: 1,
Request: rpc.Request{
Type: "foo",
Id: "id",
Action: "frob",
},
},
body: &value{X: "param"},
expect: `{"RequestId": 1, "Type": "foo","Id":"id", "Request": "frob", "Params": {"X": "param"}}`,
}, {
hdr: &rpc.Header{
RequestId: 2,
Error: "an error",
ErrorCode: "a code",
},
expect: `{"RequestId": 2, "Error": "an error", "ErrorCode": "a code"}`,
}, {
hdr: &rpc.Header{
RequestId: 3,
},
body: &value{X: "result"},
expect: `{"RequestId": 3, "Response": {"X": "result"}}`,
}, {
hdr: &rpc.Header{
RequestId: 4,
Request: rpc.Request{
Type: "foo",
Version: 2,
Id: "",
Action: "frob",
},
},
body: &value{X: "param"},
expect: `{"RequestId": 4, "Type": "foo", "Version": 2, "Request": "frob", "Params": {"X": "param"}}`,
}, {
hdr: &rpc.Header{
RequestId: 1,
Request: rpc.Request{
Type: "foo",
Id: "id",
Action: "frob",
},
Version: 1,
},
body: &value{X: "param"},
expect: `{"request-id": 1, "type": "foo","id":"id", "request": "frob", "params": {"X": "param"}}`,
}, {
hdr: &rpc.Header{
RequestId: 2,
Error: "an error",
ErrorCode: "a code",
Version: 1,
},
expect: `{"request-id": 2, "error": "an error", "error-code": "a code"}`,
}, {
hdr: &rpc.Header{
RequestId: 3,
Version: 1,
},
body: &value{X: "result"},
expect: `{"request-id": 3, "response": {"X": "result"}}`,
}, {
hdr: &rpc.Header{
RequestId: 4,
Request: rpc.Request{
Type: "foo",
Version: 2,
Id: "",
Action: "frob",
},
Version: 1,
},
body: &value{X: "param"},
expect: `{"request-id": 4, "type": "foo", "version": 2, "request": "frob", "params": {"X": "param"}}`,
}} {
c.Logf("test %d", i)
var conn testConn
codec := jsoncodec.New(&conn)
err := codec.WriteMessage(test.hdr, test.body)
c.Assert(err, jc.ErrorIsNil)
c.Assert(conn.writeMsgs, gc.HasLen, 1)
assertJSONEqual(c, conn.writeMsgs[0], test.expect)
}
}