@@ -60,14 +60,15 @@ package codec
6060import (
6161 "bytes"
6262 "flag"
63+ "strconv"
6364 "testing"
6465)
6566
6667func init () {
6768 // log.SetOutput(io.Discard) // don't allow things log to standard out/err
6869 testPreInitFns = append (testPreInitFns , testInitFlags , benchInitFlags , testParseFlags )
69- testPostInitFns = append (testPostInitFns , testUpdateOptionsFromFlags )
70- testReInitFns = append (testReInitFns , testUpdateOptionsFromFlags )
70+ // testPostInitFns = append(testPostInitFns, testUpdateOptionsFromFlags)
71+ // testReInitFns = append(testReInitFns, testUpdateOptionsFromFlags)
7172}
7273
7374func TestMain (m * testing.M ) {
@@ -83,64 +84,92 @@ var (
8384)
8485
8586// flag variables used by tests (and bench)
86- var (
87- testVerbose bool
88-
87+ type testVars struct {
88+ Verbose bool
8989 //depth of 0 maps to ~400bytes json-encoded string, 1 maps to ~1400 bytes, etc
9090 //For depth>1, we likely trigger stack growth for encoders, making benchmarking unreliable.
91- testDepth int
91+ Depth int
9292
93- testMaxInitLen int
93+ UseDiff bool
9494
95- testUseDiff bool
95+ UseReset bool
96+ UseParallel bool
9697
97- testUseReset bool
98- testUseParallel bool
98+ SkipIntf bool
99+ SkipRPCTests bool
99100
100- testSkipIntf bool
101+ UseIoWrapper bool
101102
102- testUseIoEncDec int
103- testUseIoWrapper bool
103+ NumRepeatString int
104104
105- testNumRepeatString int
105+ RpcBufsize int
106+ MapStringKeyOnly bool
106107
107- testRpcBufsize int // Deprecated: no-op
108- testMapStringKeyOnly bool
109- testZeroCopy bool
108+ BenchmarkNoConfig bool
110109
111- testBenchmarkNoConfig bool
110+ BenchmarkWithRuntimeMetrics bool
112111
113- testBenchmarkWithRuntimeMetrics bool
114- )
112+ bufsize testBufioSizeFlag
113+
114+ // variables that are not flags, but which can configure the handles
115+ E EncodeOptions
116+ D DecodeOptions
117+ R RPCOptions
118+
119+ // MaxInitLen int
120+ // ZeroCopy bool
121+ // UseIoEncDec int
122+ }
123+
124+ func (x * testVars ) setBufsize (v int ) {
125+ x .E .WriterBufferSize = v
126+ x .D .ReaderBufferSize = v
127+ }
128+
129+ type testBufioSizeFlag int
130+
131+ func (x * testBufioSizeFlag ) String () string { return strconv .Itoa (int (* x )) }
132+ func (x * testBufioSizeFlag ) Set (s string ) (err error ) {
133+ v , err := strconv .ParseInt (s , 0 , strconv .IntSize )
134+ if err != nil {
135+ v = - 1
136+ }
137+ * x = testBufioSizeFlag (v )
138+ testv .setBufsize ((int )(v ))
139+ return
140+ }
141+ func (x * testBufioSizeFlag ) Get () interface {} { return int (* x ) }
142+
143+ var testv testVars
115144
116145func testInitFlags () {
117146 var bIgnore bool
118147 // delete(testDecOpts.ExtFuncs, timeTyp)
119- flag .BoolVar ( & testVerbose , "tv " , false , "Text Extra Verbose Logging if -v if set " )
120- flag .IntVar ( & testUseIoEncDec , "ti " , - 1 , "Use IO Reader/Writer for Marshal/Unmarshal ie >= 0 " )
121- flag .BoolVar (& testUseIoWrapper , "tiw" , false , "Wrap the IO Reader/Writer with a base pass-through reader/writer" )
148+ flag .Var ( & testv . bufsize , "ti " , "Use IO Reader/Writer for Marshal/Unmarshal ie >= 0 " )
149+ flag .BoolVar ( & testv . Verbose , "tv " , false , "Text Extra Verbose Logging if -v if set " )
150+ flag .BoolVar (& testv . UseIoWrapper , "tiw" , false , "Wrap the IO Reader/Writer with a base pass-through reader/writer" )
122151
123- flag .BoolVar (& testSkipIntf , "tf" , false , "Skip Interfaces" )
124- flag .BoolVar (& testUseReset , "tr" , false , "Use Reset" )
125- flag .BoolVar (& testUseParallel , "tp" , false , "Run tests in parallel" )
126- flag .IntVar (& testNumRepeatString , "trs" , 8 , "Create string variables by repeating a string N times" )
127- flag .BoolVar (& testUseDiff , "tdiff" , false , "Use Diff" )
128- flag .BoolVar (& testZeroCopy , "tzc" , false , "Use Zero copy mode" )
152+ flag .BoolVar (& testv . SkipIntf , "tf" , false , "Skip Interfaces" )
153+ flag .BoolVar (& testv . UseReset , "tr" , false , "Use Reset" )
154+ flag .BoolVar (& testv . UseParallel , "tp" , false , "Run tests in parallel" )
155+ flag .IntVar (& testv . NumRepeatString , "trs" , 8 , "Create string variables by repeating a string N times" )
156+ flag .BoolVar (& testv . UseDiff , "tdiff" , false , "Use Diff" )
157+ flag .BoolVar (& testv . D . ZeroCopy , "tzc" , false , "Use Zero copy mode" )
129158
130- flag .BoolVar ( & bIgnore , "tm " , true , "(Deprecated) Use Must(En|De)code " )
159+ flag .IntVar ( & testv . D . MaxInitLen , "tx " , 0 , "Max Init Len " )
131160
132- flag .IntVar (& testMaxInitLen , "tx" , 0 , "Max Init Len" )
161+ flag .IntVar (& testv .Depth , "tsd" , 0 , "Test Struc Depth" )
162+ flag .BoolVar (& testv .MapStringKeyOnly , "tsk" , false , "use maps with string keys only" )
133163
134- flag .IntVar (& testDepth , "tsd" , 0 , "Test Struc Depth" )
135- flag .BoolVar (& testMapStringKeyOnly , "tsk" , false , "use maps with string keys only" )
164+ flag .BoolVar (& bIgnore , "tm" , true , "(Deprecated) Use Must(En|De)code" )
136165}
137166
138167func benchInitFlags () {
139- flag .BoolVar (& testBenchmarkNoConfig , "bnc" , false , "benchmarks: do not make configuration changes for fair benchmarking" )
140- flag .BoolVar (& testBenchmarkWithRuntimeMetrics , "brm" , false , "benchmarks: include runtime metrics" )
168+ flag .BoolVar (& testv . BenchmarkNoConfig , "bnc" , false , "benchmarks: do not make configuration changes for fair benchmarking" )
169+ flag .BoolVar (& testv . BenchmarkWithRuntimeMetrics , "brm" , false , "benchmarks: include runtime metrics" )
141170 // flags reproduced here for compatibility (duplicate some in testInitFlags)
142- flag .BoolVar (& testMapStringKeyOnly , "bs" , false , "benchmarks: use maps with string keys only" )
143- flag .IntVar (& testDepth , "bd" , 1 , "Benchmarks: Test Struc Depth" )
171+ flag .BoolVar (& testv . MapStringKeyOnly , "bs" , false , "benchmarks: use maps with string keys only" )
172+ flag .IntVar (& testv . Depth , "bd" , 1 , "Benchmarks: Test Struc Depth" )
144173}
145174
146175func testParseFlags () {
@@ -150,12 +179,12 @@ func testParseFlags() {
150179 }
151180}
152181
153- func testUpdateOptionsFromFlags () {
154- testEncodeOptions . WriterBufferSize = testUseIoEncDec
155- testDecodeOptions . ReaderBufferSize = testUseIoEncDec
156- testDecodeOptions . MaxInitLen = testMaxInitLen
157- testDecodeOptions . ZeroCopy = testZeroCopy
158- }
182+ // func testUpdateOptionsFromFlags() {
183+ // testv.E. WriterBufferSize = testv.UseIoEncDec
184+ // testv.D. ReaderBufferSize = testv.UseIoEncDec
185+ // testv.D. MaxInitLen = testv.MaxInitLen
186+ // testv.D. ZeroCopy = testv.ZeroCopy
187+ // }
159188
160189func testReinit () {
161190 // testOnce = sync.Once{}
0 commit comments