All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hyperfoil-controller-api.0.19.source-code.openapi.yaml Maven / Gradle / Ivy

There is a newer version: 0.27.1
Show newest version
openapi: 3.0.0
info:
  description: Hyperfoil Controller API
  version: "0.5"
  title: Hyperfoil Controller API
  contact:
    email: [email protected]
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
paths:
  /openapi:
    get:
      summary: Serve this OpenAPI 3 definition.
      operationId: openApi
      responses:
        '200':
          description: This OpenAPI 3 definition
          content:
            text/vnd.yaml:
              schema:
                type: string
                format: binary
  /benchmark:
    get:
      summary: List defined benchmark names.
      operationId: listBenchmarks
      responses:
        '200':
          description: Benchmark names.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
    post:
      summary: Add new benchmark definition.
      operationId: addBenchmark
      responses:
        '204':
          description: Benchmark accepted.
        '400':
          description: Benchmark is invalid.
        '406':
          description: Unsupported content-type.
        '409':
          description: Version of benchmark stored on server does not match to the updated version.
      parameters:
      - in: header
        name: if-match
        description: If we are updating an existing benchmark, expected previous version.
        schema:
          type: string
      - in: query
        name: storedFilesBenchmark
        description: Name of previously uploaded benchmark where extra files should be loaded from during multi-part upload. Usually this is the same benchmark unless it is being renamed.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: string
              format: binary
          text/uri-list:
            schema:
              type: string
              format: binary
          text/vnd.yaml:
            schema:
              type: string
              format: binary
          application/java-serialized-object:
            schema:
              type: string
              format: binary
          multipart/form-data:
            schema:
              type: object
              properties:
                benchmark:
                  type: object
                file:
                  type: array
                  items:
                    type: string
                    format: binary
        description: Benchmark definition.
  /benchmark/{name}:
    get:
      summary: Retrieve existing benchmark.
      operationId: getBenchmark
      parameters:
      - in: path
        name: name
        required: true
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Existing benchmark definition.
          content:
            text/vnd.yaml:
              schema:
                type: object
            application/java-serialized-object:
              schema:
                type: string
                format: binary
        '404':
          description: Benchmark is not defined.
        '406':
          description: Benchmark does not preserve the original source.
  /benchmark/{name}/start:
    get:
      summary: Start a new run of this benchmark.
      operationId: startBenchmark
      parameters:
      - in: path
        name: name
        required: true
        allowEmptyValue: false
        schema:
          type: string
      - in: query
        name: desc
        description: Run description
        schema:
          type: string
      - in: header
        name: x-trigger-job
        description: URL of CI job that triggers the run.
        schema:
          type: string
      - in: query
        name: runId
        description: Run ID of run that was already requested but not started.
        schema:
          type: string
      - in: query
        name: templateParam
        description: Template parameter in format KEY=VALUE
        schema:
          type: array
          items:
            type: string
      responses:
        '202':
          description: Run was successfully started.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
        '301':
          description: Run is requested but it must be started from CI.
          headers:
            Location:
              schema:
                type: string
              description: URL that should be hit to start the CI job.
            x-run-id:
              schema:
                type: string
              description: Generated run ID.
        '403':
          description: There is an ongoing run. Try later.
        '404':
          description: Requested benchmark is not defined.
  /benchmark/{name}/files:
    get:
      summary: Get data files for the benchmark
      operationId: getBenchmarkFiles
      parameters:
      - in: path
        name: name
        required: true
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: List of files
          content:
            multipart/form-data:
              schema:
                type: object
        '404':
          description: Benchmark is not defined.
        '406':
          description: Benchmark does not preserve the original source.
  /benchmark/{name}/structure:
    get:
      summary: Inspect the rendered structure of the benchmark.
      operationId: getBenchmarkStructure
      parameters:
      - in: path
        name: name
        required: true
        allowEmptyValue: false
        schema:
          type: string
      - in: query
        name: maxCollectionSize
        schema:
          type: integer
          default: 20
      - in: query
        name: templateParam
        description: Template parameters in format KEY=VALUE for resolving benchmark without running that.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: Benchmark structure.
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Benchmark is not defined.
        '406':
          description: Benchmark does not preserve the original source.
  /run:
    get:
      summary: List known runs.
      operationId: listRuns
      parameters:
      - in: query
        name: details
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Here are the runs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
  /run/{runId}:
    get:
      summary: Get info about run.
      operationId: getRun
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Run information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'

  /run/{runId}/agentCpu:
    get:
      summary: Get agent CPU data
      operationId: agentCpu
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Run was killed.
          content:
            application/json:
              schema:
                type: object

  /run/{runId}/kill:
    get:
      summary: Kill this run
      operationId: killRun
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Run was killed.
  /run/{runId}/report:
    get:
      summary: Generate HTML report for this run
      operationId: createReport
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      - in: query
        name: source
        schema:
          type: string
      responses:
        '200':
          description: Generated report
          content:
            text/html:
              schema:
                type: string
  /run/{runId}/sessions:
    get:
      summary: List sessions in plaintext (for debugging)
      operationId: listSessions
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      - in: query
        name: inactive
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Retrieved successfully.
          content:
            text/plain:
              schema:
                type: string
  /run/{runId}/sessions/recent:
    get:
      summary: Actual numbers of active sessions in each phase
      operationId: getRecentSessions
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: object
  /run/{runId}/sessions/total:
    get:
      summary: Min/max of active sessions in each phase
      operationId: getTotalSessions
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: object
  /run/{runId}/connections:
    get:
      summary: List connections in plaintext (for debugging)
      operationId: listConnections
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            text/plain:
              schema:
                type: string
  /run/{runId}/connections/recent:
    get:
      summary: Actual numbers of connections for each host:port
      operationId: getRecentConnections
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: object
  /run/{runId}/connections/total:
    get:
      summary: Total number of connections for each host:port
      operationId: getTotalConnections
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: object
  /run/{runId}/stats/all:
    get:
      summary: Get complete statistics from the run.
      description: >
        This can be invoked only after the run completes.
        Provides exported statistics either as ZIP file with CSV files
        or as JSON object.
      operationId: getAllStats
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/zip:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: object
  /run/{runId}/stats/all/json:
    get:
      summary: Get complete statistics from the run.
      description: >
        This can be invoked only after the run completes.
        Provides exported statistics as JSON object.
      operationId: getAllStatsJson
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: object
  /run/{runId}/stats/all/csv:
    get:
      summary: Get complete statistics from the run.
      description: >
        This can be invoked only after the run completes.
        Provides exported statistics as ZIP file with CSV files
      operationId: getAllStatsCsv
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/zip:
              schema:
                type: object
  /run/{runId}/stats/recent:
    get:
      summary: Actual statistics from last 5 seconds of run.
      operationId: getRecentStats
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RequestStatisticsResponse"
  /run/{runId}/stats/total:
    get:
      summary: Statistics over the whole duration of phases.
      operationId: getTotalStats
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RequestStatisticsResponse"
  /run/{runId}/stats/histogram:
    get:
      summary: Retrieve histogram for given metric.
      operationId: getHistogramStats
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      - in: query
        name: phase
        required: true
        schema:
          type: string
      - in: query
        name: stepId
        required: true
        schema:
          type: integer
      - in: query
        name: metric
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Histogram"
  /run/{runId}/file: # actual file is a query parameter as it may contain slashes
    get:
      summary: Retrieve a custom file in the run directory (generated by hooks)
      operationId: getRunFile
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      - in: query
        name: file
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '403':
          description: File is not within the run directory
        '404':
          description: File not found
  /run/{runId}/benchmark:
    get:
      summary: Benchmark used for given run.
      operationId: getBenchmarkForRun
      parameters:
      - in: path
        name: runId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            text/vnd.yaml:
              schema:
                type: object
            application/java-serialized-object:
              schema:
                type: string
                format: binary
  /agents:
    get:
      summary: All agents used (in all runs)
      operationId: listAgents
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /log:
    get:
      summary: Get controller log.
      operationId: getControllerLog
      parameters:
      - in: query
        name: offset
        schema:
          type: integer
          format: long
          default: 0
      - in: header
        name: if-match
        description: Identifier of the previously downloaded log chunk.
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            text/plain:
              schema:
                type: string
  /log/{agent}:
    get:
      summary: Get controller log.
      operationId: getAgentLog
      parameters:
      - in: path
        name: agent
        required: true
        schema:
          type: string
      - in: query
        name: offset
        schema:
          type: integer
          format: long
          default: 0
      - in: header
        name: if-match
        description: Identifier of the previously downloaded log chunk.
        schema:
          type: string
      responses:
        '200':
          description: Retrieved successfully.
          content:
            text/plain:
              schema:
                type: string
  /shutdown:
    get:
      summary: Shutdown controller
      operationId: shutdown
      parameters:
      - in: query
        name: force
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Shutting down
        '403':
          description: Some runs are in progress and force=false
  /template:
    get:
      summary: List defined template names.
      operationId: listTemplates
      responses:
        '200':
          description: Benchmark template names.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /token:
    get:
      summary: Get authorization token
      description: Returns authorization token that can be used instead of credentials with Basic Auth.
      operationId: getToken
      responses:
        '200':
          description: Serving token
  /version:
    get:
      summary: Fetch controller version
      operationId: getVersion
      responses:
        '200':
          description: Retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Version"
components:
  schemas:
    Run:
      type: object
      required:
      - id
      - benchmark
      - started
      - terminated
      properties:
        id:
          type: string
          example: 1234
          x-json-include: NON_EMPTY
        benchmark:
          type: string
          example: my-benchmark
        started:
          type: string
          format: date-time
          example: '2016/08/29 09:12:33.001'
        terminated:
          type: string
          format: date-time
        cancelled:
          type: boolean
        completed:
          type: boolean
        description:
          type: string
        phases:
          type: array
          items:
            $ref: "#/components/schemas/Phase"
        agents:
          type: array
          items:
            $ref: "#/components/schemas/Agent"
        errors:
          type: array
          items:
            type: string
    Phase:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        status:
          type: string
        type:
          type: string
        started:
          type: string
          format: date-time
        remaining:
          type: string
        completed:
          type: string
          format: date-time
        failed:
          type: boolean
        totalDuration:
          type: string
        description:
          type: string
    Agent:
      type: object
      properties:
        name:
          type: string
        address:
          type: string
        status:
          type: string
    RequestStatisticsResponse:
      type: object
      properties:
        status:
          type: string
        statistics:
          type: array
          items:
            $ref: "#/components/schemas/RequestStats"
    RequestStats:
      type: object
      properties:
        phase:
          type: string
        stepId:
          type: integer
          default: 0
        metric:
          type: string
        summary:
          type: object
          x-type: io.hyperfoil.api.statistics.StatisticsSummary
        failedSLAs:
          type: array
          items:
            type: string
        isWarmup:
          type: boolean
    Histogram:
      type: object
      properties:
        phase:
          type: string
        metric:
          type: string
        startTime:
          type: integer
          format: long
        endTime:
          type: integer
          format: long
        data:
          type: string
    Version:
      type: object
      properties:
        version:
          type: string
        commitId:
          type: string
        deploymentId:
          type: string
        serverTime:
          type: string
          format: date-time




© 2015 - 2025 Weber Informatics LLC | Privacy Policy