MCPcopy Create free account
hub / github.com/cockroachdb/cockroachdb-parser / randomJSONString

Function randomJSONString

pkg/util/json/random.go:111–145  ·  view source on GitHub ↗
(rng *rand.Rand, cfg randConfig)

Source from the content-addressed store, hash-verified

109const escapeAlphabet = `"\/'bfnrtu`
110
111func randomJSONString(rng *rand.Rand, cfg randConfig) string {
112 if cfg.maxLen <= defaultRandStrLen && rng.Intn(2) == 0 {
113 return staticStrings[rng.Intn(len(staticStrings))]
114 }
115
116 // generate string of this size, biased to produce larger strings.
117 l := rng.Intn(cfg.maxLen-cfg.maxLen/4) + cfg.maxLen>>2
118 if cfg.escapeProb == 0 {
119 return randutil.RandString(rng, l, randutil.PrintableKeyAlphabet)
120 }
121
122 result := make([]byte, 0)
123
124 for i := 0; i < l; i++ {
125 if rng.Float32() < cfg.escapeProb {
126 c := escapeAlphabet[rng.Intn(len(escapeAlphabet))]
127 result = append(result, '\\', c)
128 i++
129 if c == 'u' {
130 // Generate random unicode sequence.
131 result = append(result, []byte(randutil.RandString(rng, 4, hexAlphabetUpperAndLower))...)
132 i += 4
133 }
134 } else {
135 c := byte(rng.Intn(0x7f-0x20) + 0x20)
136 if c == '\\' {
137 // Retry -- escape handled above.
138 i--
139 continue
140 }
141 result = append(result, c)
142 }
143 }
144 return string(result)
145}
146
147func randomJSONNumber(rng *rand.Rand) interface{} {
148 return json.Number(fmt.Sprintf("%v", rng.ExpFloat64()))

Callers 1

doRandomJSONFunction · 0.85

Calls 3

RandStringFunction · 0.92
IntnMethod · 0.65
Float32Method · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…