Giter VIP home page Giter VIP logo

apid's People

Contributors

aviflax avatar dependabot[bot] avatar dimitarvdimitrov avatar iv-p avatar morwoen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

c0debrain

apid's Issues

Add template for documentation pages

Create a template for documentation pages that has:

  • Same header and footer as website
  • Table of contents
  • Heading for the doc section
  • Doc content

Create initial landing page

Have a typical startup / cli landing page with:

  • Hero with some lame call to action / slogan
  • List of features
  • Download call to actions
  • Placeholder subscribe to mailing list

Define step.Service interface

Define step.Service (change the name!) interface:
data passed step.Step
data returned step.ResultsBundle (name to be defined)

Create empty config loader

Have a config loader struct that has a default yaml file location, loads that file and unmarshalls it into an empty struct. Struct should take a file path that will be used if specified (instead of the default config file path)

Extend ConsoleWriter to write data

Extend the console writer to write transaction data for:
Write list of transactions and for each transaction add the steps with a OK / ERROR state (and list of errors if applicable)

maybe add color

Rework transaction package

Remove step interpolation logic. Create transaction.Service (name to be changed) that has step.Service and MultiWriter as dependencies. Should loop over all transactions and forward results to the MultiWriter as they become available.

Add Dockerfile

Use from scratch as a base image in a multistage Dockerfile. Default entrypoint should be the CLI.

Add a step in the pipeline to build and push the image to docker hub

Add docs

Add docs about pretty much everything

Change the Writer interface

Remove Header and Footer functions, header should be automatically applied either on init, or on first body call.

Body function should be renamed to something like WriteTransaction (your choice)

SSL verification

Add flags to root config for checking SSL expiry time and alerting

Create result writers

Create a result writer interface that will ingest data from the transaction results. One implementation is needed - console writer - that ingests data when available and publishes it to the console.

Data will be sent once for each transaction (once it finishes execution)

Add different verbosity levels

Add -v flag to the CLI that handles the verbosity level. Optional -vv or -vvv flags to add more information.

Add logs throughout the code.

Create step.Executor

Create a step.Executor struct that depends on a http.TimedClient and executes a step.PreparedStep. It should return the http.(Timed)Response object

Set up cobra and viper

Set up basic outline of a cobra command and basic parsing of config file path with viper

Add timing validators

Add a way to validate the timing of the request is less than a specified value. So for example, I want the test to fail when the server processing time is more than 500ms, maybe with some margin of error.

This would include changes to the config/suite structure and to the result validator.

Changes to the config are up for discussion, so any suggestions are welcome :)

Rework variables package

variables.Variables should hold all the data to be used in templates. It should have namespaces (vars and env) and when passed a map[string]interface{} for the particular namespace should perform a merge, rather than override the contents of the namespace.

Create TimedHttpClient

Create a "wrapper" around the standard HttpClient that times network latencies on different levels. The client should return the timings and the response of each request.

Set up contacts page

We need a way of getting questions or suggestions from users. At least an email should be ok. Or maybe a discord room?

Create step.Interpolator

Create a step interpolator that takes a step.Step and and variables.Variables. It should interpolate all fields that are expected to have template variables (look at transaction.StepInterpolator)

Add folder support for config loader

We should be able to load config files from a directory. If the -c value is a directory, then recursively load all .yaml or .yml files and merge them together in a Config, or return a list of the Configs (and modify the cli command to run that list).

Have proper versioning for the CLI

Two things:

  • the CLI doesn't have a version command
  • we aren't using the version file in the root of the repo

Would be nice if the patch in the version file was incremented each time we release and then this was injected in the compiled binary somehow. Since we're in something like alpha now, this should suffice as a version for now.

Create dummy API

Create a dummy API in go with:

  • a healthcheck endpoint that returns body "OK" and status code 200
  • an echo endpoint which returns whatever you passed it

Add the API to be executed on pull requests and releases (as e2e test of sorts)

Prettify logs

  • currently the timestamp in a zap entry is represented as a float; make it human readable or at least a unix timestamp as an int
  • we default to logging at -1, which should be made a flag defaulting to warning or error (IMO by default we shouldn't be showing zap log entries)
  • revisit places where we log with log.L.Error and change them to either warn or directly use fmt.Println

Create MultiWriter

Create a MultiWriter struct, which implements the Writer interface. It will have a list of writer it forwards results to.

Create step.Validator

Create a step.Validator package that takes a step.PreparedStep and a http.(Timed)Response and checks that the expect block is indeed what is in the response. It should return a bool and/or a list of errors.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.