Пример #1
0
func (m MarathonDeployer) prepareServiceForDeployment(group string, service *api.Service) {
	var serviceName = sanitizeServiceName(service.Name)

	service.Id = fmt.Sprintf("%s.%s", group, serviceName)
	service.Name = fmt.Sprintf("/%s/%s", group, serviceName)
	service.ActualState = "deploying"
}
func TestFailedCreateServices(t *testing.T) {

	// setup
	testClient, testConverter, testDeployer, adapter := setup()

	testDeployer.setStatus(status{code: FAIL})

	testService := new(api.Service)
	testService.Name = "/foo"

	services := make([]*api.Service, 1)
	services[0] = &api.Service{Name: "foo"}
	group := new(deploymentGroup)

	// set expectations
	testDeployer.On("BuildDeploymentGroup", services, testClient).Return(group)
	testDeployer.On("DeployGroup", group, DEPLOY_TIMEOUT).Return(status{code: OK})
	// call the code to be tested
	_, err := adapter.CreateServices(services)

	// assert if expectations are met
	assert.NotNil(t, err)
	assert.Equal(t, 409, err.Code)

	testClient.AssertExpectations(t)
	testConverter.AssertExpectations(t)

}
// Converts a single gomarathon Application into an api Service
func (c *MarathonConverter) convertToService(app *gomarathon.Application) *api.Service {
	service := new(api.Service)

	service.Id = (strings.Replace(app.ID, "/", ".", -1))[1:]
	service.Name = app.ID
	service.ActualState = "Deploying"
	if app.TasksRunning > 0 {
		service.ActualState = "Running"
	}

	return service
}
func TestPreConditionNotFound(t *testing.T) {
	var ctx = NewContext()

	var svc = api.Service{Name: "Foo", Command: "echo"}
	var link = api.Link{Name: "test", Alias: "bar"}
	svc.Links = []*api.Link{&link}
	deployment := createDeployment(&svc, nil)
	deployment.name = "TestLink"

	requirementState(&deployment, &ctx)

	assert.Equal(t, DEPLOY, deployment.status.code)
}
func TestPreConditionFound(t *testing.T) {
	var ctx = NewContext()
	var fooMap = make(map[string]string)
	fooMap["PORT_3306_TCP_PORT"] = "3000"
	ctx.AddKey("foo", fooMap)

	var svc = api.Service{Name: "Bar", Command: "echo"}
	var link = api.Link{Name: "foo", Alias: "bar"}
	svc.Links = []*api.Link{&link}
	deployment := createDeployment(&svc, nil)
	deployment.name = "TestLinked"
	requirementState(&deployment, &ctx)

	assert.Equal(t, DEPLOY, deployment.status.code)
}