envoyproxy/envoy

add memory filesystem for making tests faster, more hermetic, and more robust

Open

#11 121 ouverte le 8 mai 2020

Voir sur GitHub
 (9 commentaires) (1 réaction) (1 assigné)C++ (5 373 forks)batch import
beginnerhelp wanted

Métriques du dépôt

Stars
 (27 997 stars)
Métriques de merge PR
 (Merge moyen 8j) (378 PRs mergées en 30 j)

Description

Currently real files are used for file i/o during tests. An alternative I've used in the past is to have an in-memory representation of a file-system: https://github.com/apache/incubator-pagespeed-mod/blob/master/pagespeed/kernel/base/mem_file_system.h

This has these advantages:

  • completely hermetic, with a clean slate between tests
  • very fast (no I/O), speeding up the running of massive numbers of tests
  • you can inject notifiers etc, so you can for example get a callback or condvar wakeup or similar when a file is written

Envoy already has a filesystem abstraction (yay!) and a way to squirrel that into code that needs to read/write files (Api::Api) just no in-memory impl for it.

I think this would be a good intern project. The example I gave above would not exactly meet Envoy's needs but it could be a reference point.

Guide contributeur