func()

in experiments/client_data.go [25:130]


func (e *ExperimentClient) LoadExperimentData() {
	sceneData := make(map[string]*model.Scene, 0)

	listScenesResponse, err := e.APIClient.SceneApi.ListAllScenes()
	if err != nil {
		e.logError(fmt.Errorf("list scenes error, err=%v", err))
		return
	}

	for _, scene := range listScenesResponse.Scenes {
		listExpRoomsResponse, err := e.APIClient.ExperimentRoomApi.ListExperimentRooms(e.Environment,
			&api.ExperimentRoomApiListExperimentRoomsOpts{SceneId: optional.NewInt64(scene.SceneId), Status: optional.NewUint32(common.ExpRoom_Status_Online)})

		if err != nil {
			e.logError(fmt.Errorf("list experiment rooms error, err=%v", err))
			return
		}
		for _, experimentRoom := range listExpRoomsResponse.ExperimentRooms {
			if experimentRoom.DebugCrowdId != 0 {
				listCrowdUsersResponse, err := e.APIClient.CrowdApi.GetCrowdUsersById(experimentRoom.DebugCrowdId)
				if err != nil {
					e.logError(fmt.Errorf("list crowd users error, err=%v", err))
					return
				}
				experimentRoom.DebugCrowdIdUsers = listCrowdUsersResponse.Users
			}
			// ExperimentRoom init
			if err := experimentRoom.Init(); err != nil {
				e.logError(fmt.Errorf("experiment room init error, err=%v", err))
				return
			}

			scene.AddExperimentRoom(experimentRoom)
			listLayersResponse, err := e.APIClient.LayerApi.ListLayers(experimentRoom.ExpRoomId)
			if err != nil {
				e.logError(fmt.Errorf("list layers error, err=%v", err))
				return
			}
			for _, layer := range listLayersResponse.Layers {
				experimentRoom.AddLayer(layer)

				listExperimentGroupResponse, err := e.APIClient.ExperimentGroupApi.ListExperimentGroups(layer.LayerId,
					&api.ExperimentGroupApiListExperimentGroupsOpts{Status: optional.NewUint32(common.ExpGroup_Status_Online)})
				if err != nil {
					e.logError(fmt.Errorf("list experiment groups error, err=%v", err))
					return
				}

				for _, experimentGroup := range listExperimentGroupResponse.ExperimentGroups {
					if experimentGroup.CrowdId != 0 {
						listCrowdUsersResponse, err := e.APIClient.CrowdApi.GetCrowdUsersById(experimentGroup.CrowdId)
						if err != nil {
							e.logError(fmt.Errorf("list crowd users error, err=%v", err))
							return
						}
						experimentGroup.CrowdUsers = listCrowdUsersResponse.Users
					}

					if experimentGroup.DebugCrowdId != 0 {
						listCrowdUsersResponse, err := e.APIClient.CrowdApi.GetCrowdUsersById(experimentGroup.DebugCrowdId)
						if err != nil {
							e.logError(fmt.Errorf("list crowd users error, err=%v", err))
							return
						}
						experimentGroup.DebugCrowdUsers = listCrowdUsersResponse.Users
					}

					// ExperimentGroup init
					if err := experimentGroup.Init(); err != nil {
						e.logError(fmt.Errorf("experiment group init error, err=%v", err))
						return
					}

					layer.AddExperimentGroup(experimentGroup)

					listExperimentsResponse, err := e.APIClient.ExperimentApi.ListExperiments(experimentGroup.ExpGroupId,
						&api.ExperimentApiListExperimentsOpts{Status: optional.NewUint32(common.Experiment_Status_Online)})
					if err != nil {
						e.logError(fmt.Errorf("list experiments  error, err=%v", err))
						return
					}

					for _, experiment := range listExperimentsResponse.Experiments {
						if experiment.DebugCrowdId != 0 {
							listCrowdUsersResponse, err := e.APIClient.CrowdApi.GetCrowdUsersById(experiment.DebugCrowdId)
							if err != nil {
								e.logError(fmt.Errorf("list crowd users error, err=%v", err))
								return
							}
							experiment.DebugCrowdUsers = listCrowdUsersResponse.Users
						}
						if err := experiment.Init(); err != nil {
							e.logError(fmt.Errorf("experiment init error, err=%v", err))
							return
						}
						experimentGroup.AddExperiment(experiment)
					}
				}
			}
		}
		sceneData[scene.SceneName] = scene
	}
	if len(sceneData) > 0 {
		e.SceneMap = sceneData
	}
}