/******************************************************************************
 * Copyright (c)  2022 PingCAP                                                *
 * 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.                                             *
 ******************************************************************************/

/*******************************************************************************
 * @File: gin_test.go
 * @Description:
 * @Author: jiangxunyu@pingcap.com
 * @Version: 1.0.0
 * @Date: 2022/6/30 18:24
*******************************************************************************/

package globalapi

import (
	"context"
	"testing"
	"time"

	"github.com/tidbcloud/observability/pkg/common/constants"
	"github.com/tidbcloud/observability/pkg/common/metrics"

	"github.com/tidbcloud/observability/pkg/common/structs"
)

func Test_StartService(t *testing.T) {
	t.Run("normal_env_dev", func(t *testing.T) {
		ctx, _ := context.WithTimeout(context.TODO(), 10*time.Second)
		metrics.SetupMetrics()
		StartService(ctx, structs.ServiceInfo{Env: constants.EnvDev, MetricsPort: 38081})
	})
	t.Run("normal_env_staging", func(t *testing.T) {
		ctx, _ := context.WithTimeout(context.TODO(), 10*time.Second)
		metrics.SetupMetrics()
		StartService(ctx, structs.ServiceInfo{Env: constants.EnvStaging, MetricsPort: 38082})
	})
	t.Run("normal_env_prod", func(t *testing.T) {
		ctx, _ := context.WithTimeout(context.TODO(), 10*time.Second)
		metrics.SetupMetrics()
		StartService(ctx, structs.ServiceInfo{Env: constants.EnvProd, MetricsPort: 38083})
	})
}
