package importer import ( "encoding/json" "os" "git.frostfs.info/TrueCloudLab/xk6-frostfs/internal/registry" ) type PreGenObj struct { Bucket string `json:"bucket"` Object string `json:"object"` Container string `json:"container"` } type PreGenerateInfo struct { Buckets []string `json:"buckets"` Containers []string `json:"containers"` Objects []PreGenObj `json:"objects"` ObjSize string `json:"obj_size"` } // ImportJSONPreGen writes objects from pregenerated JSON file // to the registry. // Note that ImportJSONPreGen does not check if object already // exists in the registry so in case of re-entry the registry // will have two entities representing the same object. func ImportJSONPreGen(o *registry.ObjRegistry, filename string) error { f, err := os.ReadFile(filename) if err != nil { return err } var pregenInfo PreGenerateInfo err = json.Unmarshal(f, &pregenInfo) if err != nil { return err } // AddObject uses DB.Batch to combine concurrent Batch calls // into a single Bolt transaction. DB.Batch is limited by // DB.MaxBatchDelay which may affect perfomance. for _, obj := range pregenInfo.Objects { if obj.Bucket != "" { err = o.AddObject("", "", obj.Bucket, obj.Object, "") } else { err = o.AddObject(obj.Container, obj.Object, "", "", "") } if err != nil { return err } } return nil }