“Replay errors as code from HTTP calls”
Introduction
ActiveViam has shown that its proprietary software Atoti is the leading technology to interactively analyse datasets from Gigabytes to Terabytes. Atoti can harness the largest machines of Cloud platforms and on-premise DataCenters to make all the CPUs work at a blazing speed on their Terabyte RAMs filled with client data.
ActiveViam offers a Python API on top of its Java backend. This API allows easy adoption of the technology for all users. See https://docs.atoti.io/
Atoti Python API interacts with the backend using HTTP calls, a mix of GraphQL queries and mutations as well as standard REST calls. With more and more projects being developed with the API, more and more bugs are reported by these API users. The Python API being a simple client, most of the errors come from bugs in the Java layer. Unfortunately, the debugging experience of a backend driven by a series of remote calls is far from ideal.
In this context, ActiveViam looks for a way to translate this series of HTTP calls into a plain Java program, allowing developers to easily debug a single-language program.
Expected Work
The goal of this internship is to prototype a system that generates correct Java code, reproducing the interactions performed by a Python client using HTTP calls.
In the first phase, the intern will create a basic version of the tool, using Java instrumentation. The HTTP endpoints will be enhanced to create corresponding code as they are called.
In a second phase, the intern will improve the tool to allow filtering some methods, to help the developer focus on relevant methods. For example, Atoti Python API performs some reads to gather the necessary information before making writes to the backend. These reads are often not the source of bugs in the project. The tool could thus offer an option to ignore them.
Similarly, if developers were to complete the generated code with some assertions, the tool could automatically find the minimum set of calls triggering the error, leading to a more minimal reproduction.
In a third phase, the intern will study how to lower the generated code. While using the endpoint classes to create some code is convenient, it requires a certain amount of setup before being able to run anything. If time allows it, the intern will look for ways to directly inline some of the called methods, removing some indirections.
This prototype will be coded in Java, the core language of Atoti+, and Python for the definition of the calculations.
About ActiveViam
ActiveViam provides business users with instant insight into large volumes of fast-moving data for timely and context-aware decision-making.
Founded in 2005, ActiveViam employs over 150 people in its five offices of New-York, London, Paris and Singapore. We expect sustained growth in 2022 and will continue hiring the best talents from the top schools.
