/* * Copyright 2021 ByteDance Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package decoder import ( `encoding/json` `runtime` `runtime/debug` `strings` `sync` `testing` `time` `github.com/davecgh/go-spew/spew` `github.com/stretchr/testify/assert` `github.com/stretchr/testify/require` ) func TestMain(m *testing.M) { go func () { if !debugAsyncGC { return } println("Begin GC looping...") for { runtime.GC() debug.FreeOSMemory() } println("stop GC looping!") }() time.Sleep(time.Millisecond) m.Run() } func TestGC(t *testing.T) { if debugSyncGC { return } var w interface{} out, err := decode(TwitterJson, &w, true) if err != nil { t.Fatal(err) } if out != len(TwitterJson) { t.Fatal(out) } wg := &sync.WaitGroup{} N := 10000 for i:=0; i