/** * Copyright 2016 LinkedIn Corp. All rights reserved. * * 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. */ package com.github.ambry.tools.perf.rest; import com.github.ambry.config.Config; import com.github.ambry.config.Default; import com.github.ambry.config.VerifiableProperties; import com.github.ambry.rest.RestMethod; /** * Configuration parameters associated with performance tests. */ class PerfConfig { // General /** * Size in bytes of the blob that will used for GET/POST. */ @Config("perf.blob.size") @Default("10485760") public final long perfBlobSize; /** * Size in bytes of the user metadata that will used for GET/HEAD/POST. */ @Config("perf.user.metadata.size") @Default("1024") public final int perfUserMetadataSize; // PerfNioServer /** * Size in bytes of each chunk that will created during POST by the {@link PerfNioServer}. */ @Config("perf.nio.server.chunk.size") @Default("8192") public final int perfNioServerChunkSize; /** * Number of concurrent requests. */ @Config("perf.nio.server.concurrency") @Default("1") public final int perfNioServerConcurrency; /** * {@link RestMethod} desired in the {@link com.github.ambry.rest.RestRequest} generated by {@link PerfNioServer}. */ @Config("perf.request.rest.method") @Default("GET") public final RestMethod perfRequestRestMethod; // PerfRouter /** * Size in bytes of each chunk that will created during GET by the {@link PerfRouter}. */ @Config("perf.router.chunk.size") @Default("1048576") public final int perfRouterChunkSize; public PerfConfig(VerifiableProperties verifiableProperties) { // General perfBlobSize = verifiableProperties.getLong("perf.blob.size", 10485760); perfUserMetadataSize = verifiableProperties.getIntInRange("perf.user.metadata.size", 1024, 0, 81920); // PerfNioServer perfNioServerChunkSize = verifiableProperties.getIntInRange("perf.nio.server.chunk.size", 8192, 1, 10485760); perfNioServerConcurrency = verifiableProperties.getIntInRange("perf.nio.server.concurrency", 1, 1, Integer.MAX_VALUE); perfRequestRestMethod = RestMethod.valueOf( verifiableProperties.getString("perf.request.rest.method", RestMethod.GET.toString()).toUpperCase()); // PerfRouter perfRouterChunkSize = verifiableProperties.getIntInRange("perf.router.chunk.size", 1048576, 1, 10485760); } }