Search in sources :

Example 41 with Slime

use of com.yahoo.slime.Slime in project vespa by vespa-engine.

the class RPCSendV2 method createResponse.

@Override
protected void createResponse(Values ret, Reply reply, Version version, byte[] payload) {
    ret.add(new Int8Value(CompressionType.NONE.getCode()));
    ret.add(new Int32Value(0));
    ret.add(new DataValue(new byte[0]));
    Slime slime = new Slime();
    Cursor root = slime.setObject();
    root.setString(VERSION_F, version.toString());
    root.setDouble(RETRYDELAY_F, reply.getRetryDelay());
    root.setString(PROTOCOL_F, reply.getProtocol().toString());
    root.setData(BLOB_F, payload);
    if (reply.getTrace().getLevel() > 0) {
        root.setString(TRACE_F, reply.getTrace().getRoot().encode());
    }
    if (reply.getNumErrors() > 0) {
        Cursor array = root.setArray(ERRORS_F);
        for (int i = 0; i < reply.getNumErrors(); i++) {
            Cursor e = array.addObject();
            Error mbusE = reply.getError(i);
            e.setLong(CODE_F, mbusE.getCode());
            e.setString(MSG_F, mbusE.getMessage());
            if (mbusE.getService() != null) {
                e.setString(SERVICE_F, mbusE.getService());
            }
        }
    }
    byte[] serializedSlime = BinaryFormat.encode(slime);
    Compressor.Compression compressionResult = compressor.compress(serializedSlime);
    ret.add(new Int8Value(compressionResult.type().getCode()));
    ret.add(new Int32Value(compressionResult.uncompressedSize()));
    ret.add(new DataValue(compressionResult.data()));
}
Also used : DataValue(com.yahoo.jrt.DataValue) Int8Value(com.yahoo.jrt.Int8Value) Int32Value(com.yahoo.jrt.Int32Value) Error(com.yahoo.messagebus.Error) Compressor(com.yahoo.compress.Compressor) Slime(com.yahoo.slime.Slime) Cursor(com.yahoo.slime.Cursor)

Example 42 with Slime

use of com.yahoo.slime.Slime in project vespa by vespa-engine.

the class JsonFormat method encode.

/**
 * Serialize the given tensor into JSON format
 */
public static byte[] encode(Tensor tensor) {
    Slime slime = new Slime();
    Cursor root = slime.setObject();
    Cursor cellsArray = root.setArray("cells");
    for (Iterator<Tensor.Cell> i = tensor.cellIterator(); i.hasNext(); ) {
        Tensor.Cell cell = i.next();
        Cursor cellObject = cellsArray.addObject();
        encodeAddress(tensor.type(), cell.getKey(), cellObject.setObject("address"));
        cellObject.setDouble("value", cell.getValue());
    }
    return com.yahoo.slime.JsonFormat.toJsonBytes(slime);
}
Also used : Tensor(com.yahoo.tensor.Tensor) Slime(com.yahoo.slime.Slime) Cursor(com.yahoo.slime.Cursor)

Example 43 with Slime

use of com.yahoo.slime.Slime in project vespa by vespa-engine.

the class FailureRedeployerTest method retryIgnoresStaleJobData.

@Test
public void retryIgnoresStaleJobData() throws Exception {
    DeploymentTester tester = new DeploymentTester();
    tester.controllerTester().zoneRegistry().setSystem(SystemName.cd);
    tester.controllerTester().zoneRegistry().setZones(ZoneId.from("prod", "cd-us-central-1"));
    // Current system version, matches version in test data
    Version version = Version.fromString("6.141.117");
    tester.configServer().setDefaultVersion(version);
    tester.updateVersionStatus(version);
    assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber());
    // Load test data data
    byte[] json = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/canary-with-stale-data.json"));
    Slime slime = SlimeUtils.jsonToSlime(json);
    Application application = tester.controllerTester().createApplication(slime);
    ApplicationPackage applicationPackage = new ApplicationPackageBuilder().upgradePolicy("canary").region("cd-us-central-1").build();
    tester.jobCompletion(component).application(application).uploadArtifact(applicationPackage).submit();
    // New version is released
    version = Version.fromString("6.142.1");
    tester.configServer().setDefaultVersion(version);
    tester.updateVersionStatus(version);
    assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber());
    tester.upgrader().maintain();
    tester.readyJobTrigger().maintain();
    // Test environments pass
    tester.deploy(DeploymentJobs.JobType.systemTest, application, applicationPackage);
    tester.deploymentQueue().takeJobsToRun();
    tester.clock().advance(Duration.ofMinutes(10));
    tester.jobCompletion(DeploymentJobs.JobType.systemTest).application(application).submit();
    tester.deploy(DeploymentJobs.JobType.stagingTest, application, applicationPackage);
    tester.deploymentQueue().takeJobsToRun();
    tester.clock().advance(Duration.ofMinutes(10));
    tester.jobCompletion(DeploymentJobs.JobType.stagingTest).application(application).submit();
    // Production job starts, but does not complete
    assertEquals(1, tester.deploymentQueue().jobs().size());
    assertEquals("Production job triggered", DeploymentJobs.JobType.productionCdUsCentral1.jobName(), tester.deploymentQueue().jobs().get(0).jobName());
    tester.deploymentQueue().takeJobsToRun();
    // Failure re-deployer runs
    tester.readyJobTrigger().maintain();
    assertTrue("No jobs retried", tester.deploymentQueue().jobs().isEmpty());
    // Deployment notifies completeness but has not actually made a deployment
    tester.jobCompletion(DeploymentJobs.JobType.productionCdUsCentral1).application(application).submit();
    assertTrue("Change not really deployed", tester.application(application.id()).change().isPresent());
    // Deployment actually deploys and notifies completeness
    tester.deploy(DeploymentJobs.JobType.productionCdUsCentral1, application, applicationPackage);
    tester.jobCompletion(DeploymentJobs.JobType.productionCdUsCentral1).application(application).submit();
    assertFalse("Change not really deployed", tester.application(application.id()).change().isPresent());
}
Also used : Version(com.yahoo.component.Version) DeploymentTester(com.yahoo.vespa.hosted.controller.deployment.DeploymentTester) ApplicationPackageBuilder(com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder) Slime(com.yahoo.slime.Slime) Application(com.yahoo.vespa.hosted.controller.Application) ApplicationPackage(com.yahoo.vespa.hosted.controller.application.ApplicationPackage) Test(org.junit.Test) JobType.systemTest(com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.systemTest)

Example 44 with Slime

use of com.yahoo.slime.Slime in project vespa by vespa-engine.

the class FailureRedeployerTest method ignoresPullRequestInstances.

@Test
public void ignoresPullRequestInstances() throws Exception {
    DeploymentTester tester = new DeploymentTester();
    tester.controllerTester().zoneRegistry().setSystem(SystemName.cd);
    // Current system version, matches version in test data
    Version version = Version.fromString("6.42.1");
    tester.configServer().setDefaultVersion(version);
    tester.updateVersionStatus(version);
    assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber());
    // Load test data data
    byte[] json = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/pr-instance-with-dead-locked-job.json"));
    Slime slime = SlimeUtils.jsonToSlime(json);
    Application application = tester.controllerTester().createApplication(slime);
    // Failure redeployer does not restart deployment
    tester.readyJobTrigger().maintain();
    assertTrue("No jobs scheduled", tester.deploymentQueue().jobs().isEmpty());
}
Also used : Version(com.yahoo.component.Version) DeploymentTester(com.yahoo.vespa.hosted.controller.deployment.DeploymentTester) Slime(com.yahoo.slime.Slime) Application(com.yahoo.vespa.hosted.controller.Application) Test(org.junit.Test) JobType.systemTest(com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.systemTest)

Example 45 with Slime

use of com.yahoo.slime.Slime in project vespa by vespa-engine.

the class FailureRedeployerTest method applicationWithoutProjectIdIsNotTriggered.

@Test
public void applicationWithoutProjectIdIsNotTriggered() throws Exception {
    DeploymentTester tester = new DeploymentTester();
    // Current system version, matches version in test data
    Version version = Version.fromString("6.42.1");
    tester.configServer().setDefaultVersion(version);
    tester.updateVersionStatus(version);
    assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber());
    // Load test data data
    byte[] json = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/application-without-project-id.json"));
    Slime slime = SlimeUtils.jsonToSlime(json);
    tester.controllerTester().createApplication(slime);
    // Failure redeployer does not restart deployment
    tester.readyJobTrigger().maintain();
    assertTrue("No jobs scheduled", tester.deploymentQueue().jobs().isEmpty());
}
Also used : Version(com.yahoo.component.Version) DeploymentTester(com.yahoo.vespa.hosted.controller.deployment.DeploymentTester) Slime(com.yahoo.slime.Slime) Test(org.junit.Test) JobType.systemTest(com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.systemTest)

Aggregations

Slime (com.yahoo.slime.Slime)131 Cursor (com.yahoo.slime.Cursor)76 Test (org.junit.Test)43 ByteArrayOutputStream (java.io.ByteArrayOutputStream)23 SlimeJsonResponse (com.yahoo.vespa.hosted.controller.restapi.SlimeJsonResponse)22 DefParser (com.yahoo.config.codegen.DefParser)14 InnerCNode (com.yahoo.config.codegen.InnerCNode)14 StringReader (java.io.StringReader)14 JsonFormat (com.yahoo.slime.JsonFormat)10 ApplicationId (com.yahoo.config.provision.ApplicationId)9 Inspector (com.yahoo.slime.Inspector)9 Application (com.yahoo.vespa.hosted.controller.Application)9 SlimeAdapter (com.yahoo.data.access.slime.SlimeAdapter)8 IOException (java.io.IOException)8 Version (com.yahoo.component.Version)7 JsonDecoder (com.yahoo.slime.JsonDecoder)6 ConfigPayload (com.yahoo.vespa.config.ConfigPayload)6 HttpResponse (com.yahoo.container.jdisc.HttpResponse)5 DeployLogger (com.yahoo.config.application.api.DeployLogger)4 TenantName (com.yahoo.config.provision.TenantName)4