mirror of
https://github.com/hanzoai/tasks.git
synced 2026-10-04 02:04:03 +00:00
## What changed? 1. Refactor functional tests. 2. Move all common code into separate module 3. For every test - create designated test suite. 4. For every test - create '_test.go" file that is executing the corresponding test suite. 5. Lots of minor refactoring related to code being messy.
99 lines
3.2 KiB
Go
99 lines
3.2 KiB
Go
// The MIT License
|
|
//
|
|
// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved.
|
|
//
|
|
// Copyright (c) 2020 Uber Technologies, Inc.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
|
|
package ndc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
|
|
historypb "go.temporal.io/api/history/v1"
|
|
replicationpb "go.temporal.io/api/replication/v1"
|
|
historyspb "go.temporal.io/server/api/history/v1"
|
|
"go.temporal.io/server/common/codec"
|
|
"go.temporal.io/server/tests/testcore"
|
|
)
|
|
|
|
var (
|
|
clusterName = []string{"cluster-a", "cluster-b", "cluster-c"}
|
|
clusterReplicationConfig = []*replicationpb.ClusterReplicationConfig{
|
|
{ClusterName: clusterName[0]},
|
|
{ClusterName: clusterName[1]},
|
|
{ClusterName: clusterName[2]},
|
|
}
|
|
)
|
|
|
|
func GetEventBatchesFromTestEvents(fileName string, workflowId string) ([][]*historypb.HistoryEvent, *historyspb.VersionHistory, error) {
|
|
filePath := "./testevents/" + fileName
|
|
content, err := os.ReadFile(filePath)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
var result map[string]interface{}
|
|
|
|
// Unmarshal the JSON data into a map
|
|
err = json.Unmarshal(content, &result)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
batches, ok := result[workflowId].([]interface{})
|
|
if !ok {
|
|
return nil, nil, errors.New("workflowId not found in test data")
|
|
}
|
|
var elements [][]byte
|
|
for i, v := range batches {
|
|
subArray, ok := v.([]interface{})
|
|
if !ok {
|
|
return nil, nil, fmt.Errorf("element %d is not a sub-array, is type %s", i, fmt.Sprintf("%T", v))
|
|
}
|
|
temp, err := json.Marshal(subArray)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
elements = append(elements, temp)
|
|
}
|
|
historyBatches := make([][]*historypb.HistoryEvent, len(batches))
|
|
encoder := codec.NewJSONPBEncoder()
|
|
for i, batch := range elements {
|
|
historyEvents, err := encoder.DecodeHistoryEvents(batch)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
historyBatches[i] = historyEvents
|
|
}
|
|
var eventsFlatted []*historypb.HistoryEvent
|
|
for _, batch := range historyBatches {
|
|
eventsFlatted = append(eventsFlatted, batch...)
|
|
}
|
|
versionHistory, err := testcore.EventBatchesToVersionHistory(nil, []*historypb.History{
|
|
{Events: eventsFlatted},
|
|
})
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
return historyBatches, versionHistory, nil
|
|
}
|