Git Product home page Git Product logo

dana's Introduction

Dana

Dana (DAta ANalysis) system provides:

  • a way to agglomerate data coming from tests or benchmarks and processing them on the fly by doing some regression and comparison analysis,
  • a dashboard to provide several views to enable fast identification of regressions or result comparisons,
  • a regression workfow to follow the work on series and the overall progress,
  • a report is sent each day at midnight with a summary of new regressions of the day.

Demo

Principles

See Principes documentation to understand key concepts of Dana.

Dana APIs

Dana provides some APIs to add builds, series and samples. APIs are accessible using POST http requests or using a node client using WebSockets. See APIs documentation for details.

Have a demo

See Demo documentation to know who to setup a Demo dana server on your machine in few commands.

Setup a server

See Setup documentation to know who to setup a Dana server and Adding project pages to know how to add dashboard pages for a project.

Bugs, feature requests

Tools used

Disclaimer

This is not an official Google product

dana's People

Contributors

antiagainst avatar dependabot[bot] avatar gcabillic avatar kant avatar pzread 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dana's Issues

demo not working

First of all thank you very much for this repo.
I'm trying to build something like IREE's benchmark dashboard but I'm struggling with the demo.
I was able to spot some bugs after lots of debugging (not a node expert):

  • sessionSecret should be set to a string in configs/dana.js
  • adminUser should be a list in configs/dana.js ? because that's how it's used in src/server.js

dana/src/server.js

Lines 1073 to 1084 in cfaa558

function findByUsername(username, cb) {
let records = global.config.adminUser;
process.nextTick(function() {
for (let ii = 0, len = records.length; ii < len; ii++) {
let record = records[ii];
if (record.username === username) {
return cb(null, record);
}
}
return cb(null, null);
});
};

  • Web socket client only works after uncommenting some code in src/server.js.
  • Now I'm at a point where server crashes after I run pullDummyData.js, which creates empty folders and files in configs/db/Test/series.

Can someone from the IREE team share with me a minimal functioning example/demo I would be very grateful.

UI Improvement and Build annotations

Add a page to add/delete/edit annotations on builds that will be show on all annotations.

On the series detail page extend the comment to be able to add an annotation on a build id.

Add on the state view the ability to select multiple rows and do some actions:

  • change state for all of them and ask for a comment/build annotation that will be added on all series
  • set bug link for all of them

Manage automatically similar series base

When series are similar, we should add a way to reduce automatically the number of samples involved in the regression computation. We could adjust automatically the base to keep a maximum of the last 50 or 25 builds in that case?

The regression computation will not be impacted and the computation time of the regression analysis will be better.

tag a release

Can you tag a release, so that I can make a conda-forge recipe for installing dana with conda? Thanks!

Support comparison of different serieIds

For now a compare is attached to one particular projectId. When a new sample is added in this projectId, the compares are applied. The way it works is that for each serieId that exists in the compare project, the comparison is applied. So we can currently only compare series that have the same serieId.

We have a need to compare series with different serieIds. For example compare "buildTime.linux" with "buildTime.mac". To do this

  • we will extend compares to enable a string replacement for a serieId. For example: replace 'linux' with 'mac'.
  • we will add a property 'replace in a compare: { searchValue : "linux", newValue:"mac" }, add the logic in analyse.js module to support it and extends the UI on compare management.

I am unable to add more than one sample value against single BuildId and single Serieid.

The following API, i have used to add value against the single "BuildId" and single "SerieId".

curl -d '{"projectId":"Test","serieId":"serie.dummy.11","sample":{"buildId":1000,"value":748}}'
-H "Content-Type: application/json"
-X POST http://dana.myserver.com/apis/addSample'

  • But i am able to add just single sample value against the single "BuildId", when i tries to add another value but it displays an error " serieId already exist, use override flag to override content".

Expected:

  • I should be able to add multiple sample value against the single "SerieId".

Extend small graph view support in statusSeries

In statusSeries page, introduce a selector to choose between having a graph showing

  • each series starting from its base
  • each series according to the last 50 builds (nice to see if some series are missing some builds)

[Feature Request] Show duration of each build step

The Dana bot UI allows to see the different steps that were executed for a particular build. For each step we can see:

  • if it succeeded or failed
  • its options
  • the logs (in case it failed)

In addition, it would be nice to also display the duration of each step. It could help catching unexpected slow tasks, get some time stats, ...

Bot queue does not display tasks in numerical order

When starting the bot with many commits (> 20 for example), the bot queue lists tasks in an unsorted order.

In my case, I see:
2 task1
21 task2
4 task1
5 task2
6 task1
...
10 task1
11 task2
3 task2
...

Manage test states

If a test is failing in triage
-> select confirmed and propose to ad a bug link with a bug report
-> select Fixed and set the analysis base to the last passing

Change dana-bot queue management

One task should have only one task in the queue, and the base should be updated only when the task is done.
This will avoid to loose some tasks when the bot is shutdown.

[Feature request] Allow configuration of bot limitPatches

In dana-bot/src/bot.js, the globalBot.limitPatches is the maximum number of CLs to put in the queue when browsing the git log from ToT (HEAD) to the task's base. It is set to 10.

It means that if there are 100 commits between the ToT and the task's base, only the 10 most recent commits will be pushed into the queue (ToT->ToT~9). The 90 other commits (starting from the base) won't be executed.

It would be better to configure this value in dana-bot/configs/bot.js. This way, each bot can set it limit.

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.