From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vk0-f47.google.com (mail-vk0-f47.google.com [209.85.213.47]) by dpdk.org (Postfix) with ESMTP id E6D1D1B209 for ; Fri, 10 Nov 2017 00:53:21 +0100 (CET) Received: by mail-vk0-f47.google.com with SMTP id y196so5117147vkc.5 for ; Thu, 09 Nov 2017 15:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=mime-version:from:date:message-id:subject:to:cc; bh=j2qGxjwtRbXx+QGLAThD3Je16+bAupagVdTGguH5Ajg=; b=jA5tbMQMg5pTF0ra7oG6Gki9R5dxQ9yNZt5gOEpBxF+jw3KJvhEjLOM/ynx9oX/Xvh Kq1uMtGEu2wuZVhG+kWtLLuDJXObRodpix+o7Z5Cmfs4P8fcAdqf/l4loPo+Mt+F1pjr blEcFAlHaPM25ceCSxBic/D1uXKp5tAegnHIA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=j2qGxjwtRbXx+QGLAThD3Je16+bAupagVdTGguH5Ajg=; b=J52r9tUEKmJUwn7H1Uj7fropOP95rxVbIGF7vsZI/AOMXTnMUqS2KkyKfRJMiCv6G3 LQKgiiOcQz7IFwlDPnp0EtFpkecrCZ6b82cqIwQRBS9Xf4jOM3kITK4bsBRza6/prNng SXnY0R627sCF0XZ5/7tNhsmE100A0g98k/il4V6cwp0p6m4bzy8ZzLfPRpqC/eJKFvCW fGZvRNUxfPmueTjxrixb1k6B74sv2U8M47NdlV/7NJz0GTXHm8Wh8cVXkKo9ZYVR+Ct3 gyncdJPEZSOdzPDl8AGFZLZSCXYLYXsYDQaAQtked6eorY86GORDRwGW7stDBeuZMuwL LhSQ== X-Gm-Message-State: AJaThX4zgNH9OJXZS1DR04zpn0BGK7Eiw2iPZVo6MevQB6eVV4QK+P7x tyDqcBxu4a38TrSzQNgctldaw9KesAch0HHnWDGU0w== X-Google-Smtp-Source: AGs4zMbL8p2HYZB0rY7YB3hb04Sody/joyICWRsu1x/3EfvI1kktFm0OyFHOIBO3jIbFR+8HFyJAcBrNON0j0bESNyQ= X-Received: by 10.31.206.3 with SMTP id e3mr1850709vkg.89.1510271600785; Thu, 09 Nov 2017 15:53:20 -0800 (PST) MIME-Version: 1.0 Received: by 10.159.34.83 with HTTP; Thu, 9 Nov 2017 15:53:20 -0800 (PST) From: Patrick MacArthur Date: Thu, 9 Nov 2017 18:53:20 -0500 Message-ID: To: ci@dpdk.org Cc: Bob Noseworthy Content-Type: multipart/mixed; boundary="001a114e52384989c0055d9582ff" Subject: [dpdk-ci] [RFC] test lab database schema X-BeenThere: ci@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK CI discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Nov 2017 23:53:22 -0000 --001a114e52384989c0055d9582ff Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, all, I have been working on a database schema for storing performance results. I am attempting to make this generic enough to store whatever measurements we want. I have attached an entity-relationship diagram of the schema which should illustrate the starting point for the schema. As a side note, I have managed to get DTS to run some of the functional tests on a pair of nodes locally in a test setup while I wait for equipment to be ready to ship. I am still working on a setup to get it to run the performance tests so I can get some output to parse to begin working on pulling information into the database. Some notes on the tables: patch: I propose that for this schema patches will be stored on the filesystem content-addressable by the sha256 hash of the patch file. patchset: "branch" refers to corresponding repo (master -> dpdk, dpdk-next-net -> dpdk/next-net, etc.) and will be NULL until the patchset is applied. Tarballs stored as files named after patchset id. patchset_result: Result entry for a patchset. A patchset passes if there is a result for every measurement which is either PASS or N/A. environment: This should represent everything about where the test was run and a new environment needs to be created every time this changes (e.g., kernel or compiler update). I gathered the list of fields by looking at the existing performance reports on the DPDK website. This can be used for verification, to allow the test environment to be reproducible, and to ensure that all comparisons are within an identical setup. measurement: A single measurement which can be applied to any patchset. We can use values like (name: =E2=80=9CBUILD=E2=80=9D, higherIsBe= tter: TRUE, expectedValue: 1, deltaLimit: 0) to verify non-performance conditions, such as the build succeeding for the given environment. The primary keys for these tables are not shown; I will likely be implementing the database using the data modeling framework for whatever Web backend we wind up selecting, which will set up primary keys and table join relationships automatically. Comments/suggestions? Is there anything that this schema does not cover? Thanks, Patrick --=20 Patrick MacArthur Research and Development, High Performance Networking and Storage UNH InterOperability Laboratory --001a114e52384989c0055d9582ff Content-Type: application/pdf; name="Test Result ERD.pdf" Content-Disposition: attachment; filename="Test Result ERD.pdf" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j9k3mzou0 JVBERi0xLjcKJcKAwoHCgsKDCjMgMCBvYmoKPDwvVHlwZSAvUGFnZQovUGFyZW50IDEgMCBSCi9N ZWRpYUJveCBbMCAwIDc5MiA2MTJdCi9SZXNvdXJjZXMgMiAwIFIKL0Fubm90cyBbCl0KL0NvbnRl bnRzIFs0IDAgUiA1IDAgUl0gPj4KZW5kb2JqCjQgMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29k ZSAvTGVuZ3RoIDExOTA1Pj4Kc3RyZWFtCnic7V1Bdus4rp3XKrKB+IikJEor6HF3LyHn/F+DZNB/ 0tv/Ii4oUn5OIiG2ZSv3dHWVEIsiCYIgcAGS7tS8pP+9OnnonZ/++/bx16nt5O/5v9OfnL6a/3v5 T+k/Hy8u9unhHQ8u9Ol5fvj7r/9I0fz///vfl//565/6x7Pv/Sf9eWjSm313km8r5U9+epZ/9/KX oZO/p+e3lxAL9T5R8TQoFaryofrym1J+dCijVJhKorwf+1RevoznN60V1Lu2B5Sryrvqy2+f9/+Y XU0i9d9JkvSff/3j5d9Tb/+56LFvGulxqKj3b8v6RVml0L5vytaS5samcPPjMzGs/9ilKnw49TJV Gp0qzSdT5XWeVRc/vfzT/O7lRrg0BK9ubCEfsQEZZqF4dV1FLEbuNYzSz/TvVAk+1sobQ6uPfS/l UidRBjImPRZpeH/xbfUc0ADIXtcuKPlUlkt82A2pP0NberHo0iQwL66J6Q8eg+raQrkuNftVatHn EeKs1KRf0k+tVjwkAl9Dr99e+q5Q2r4Q52fho3b2tWtmdqD2ql1v01hM0o9/dPr+KVgQzO2D3Drh fA8GeDRT5rhLH0xPMcxDJ+2XMUff4vzYoTsO3JYf4oBn8KkpRHoNY9nJnAgOH0uvjGN5fsPIZxbi c30q2YHRAYz2qLT1EBP9wljew+A3TT34rq1kwUWMaawJFUclh/GERUaodlBKmu5l9CMq7ufRePVQ TEo5KMBM4QPSNSkunXkV5laDkqRUKgOHP5QIieibWUiG8ji12KNV+JZwuh3LICgDRuHNmLqDbwrr q7rWCV5rE7xOeisT7kOHSdobMWKpFWig76rWuiBcU0Ke+9QbUTNRxVQeXlvwAoRrwqlLvNcJGqVo 9ycxyWw3E6pbVKCUCgPaipagG2fUNNDdTOVyY3uB0uqUyi0ZL1BNTQnb3lcNT2cbnrEvE+9j1q5F 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 Q0d9KR51H8MeJ/nyID5bXOXLsmjsUjYgjpoosJXneq4H/UF2itEfCzB01JjiUSf03vRXYgxObvZR ZFw3ehZZeY9g4ETGAQw6Xaw9euLBSo+ygxvlBY9EmRgs83lExEMMtZ57LEVWYXlPpeBUyAEMitr6 ey3sR/poVFji+pq4tVXmlhM2pL0YYbMA85FKb0GWDBN8BFEcpcVTCbpGXCLLPiVfxSUwO4tVCvJj OUoZAd77Otl7/vof4blsNgplbmRzdHJlYW0KZW5kb2JqCjEgMCBvYmoKPDwvVHlwZSAvUGFnZXMK L0tpZHMgWzMgMCBSIF0KL0NvdW50IDEKPj4KZW5kb2JqCjIgMCBvYmoKPDwKL1Byb2NTZXQgWy9Q REYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9Gb250IDw8Ci9GMSA2IDAgUgovRjIg NyAwIFIKL0YzIDggMCBSCi9GNCA5IDAgUgoKPj4KL1hPYmplY3QgPDwKPj4KL0V4dEdTdGF0ZSA8 PAo+PgovU2hhZGluZyA8PAo+Pgo+PgplbmRvYmoKNiAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZl dGljYQovU3VidHlwZSAgL1R5cGUxCi9UeXBlICAgICAvRm9udAovRW5jb2RpbmcgL1dpbkFuc2lF bmNvZGluZwo+PgplbmRvYmoKNyAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xkCi9T dWJ0eXBlICAvVHlwZTEKL1R5cGUgICAgIC9Gb250Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5n Cj4+CmVuZG9iago4IDAgb2JqCjw8Ci9CYXNlRm9udCAvSGVsdmV0aWNhLU9ibGlxdWUKL1N1YnR5 cGUgIC9UeXBlMQovVHlwZSAgICAgL0ZvbnQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4K ZW5kb2JqCjkgMCBvYmoKPDwKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUKL1N1YnR5 cGUgIC9UeXBlMQovVHlwZSAgICAgL0ZvbnQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4K ZW5kb2JqCjEwIDAgb2JqCjw8Ci9UaXRsZSAoVGVzdCBSZXN1bHQgRVJELnBkZikKL0F1dGhvciAo KQovU3ViamVjdCAoTHVjaWRjaGFydCkKL0tleXdvcmRzICgpCi9DcmVhdG9yIChQYXRyaWNrIE1h Y0FydGh1cikKL1Byb2R1Y2VyIChMdWNpZCBTb2Z0d2FyZSBJbmMuKQovQ3JlYXRpb25EYXRlIChE OjIwMTcxMTAzMTYxMjUwKQovTW9kRGF0ZSAoRDoyMDE3MTEwMzE2MTI1MCkKPj4KZW5kb2JqCjEx IDAgb2JqCjw8Ci9UeXBlIC9DYXRhbG9nCi9QYWdlcyAxIDAgUgo+PgplbmRvYmoKeHJlZgowIDEy CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAxMzg4NSAwMDAwMCBuIAowMDAwMDEzOTQyIDAwMDAw IG4gCjAwMDAwMDAwMTkgMDAwMDAgbiAKMDAwMDAwMDE0MiAwMDAwMCBuIAowMDAwMDEyMTE5IDAw MDAwIG4gCjAwMDAwMTQxMDkgMDAwMDAgbiAKMDAwMDAxNDIxMSAwMDAwMCBuIAowMDAwMDE0MzE4 IDAwMDAwIG4gCjAwMDAwMTQ0MjggMDAwMDAgbiAKMDAwMDAxNDU0MiAwMDAwMCBuIAowMDAwMDE0 NzYxIDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgMTIKL1Jvb3QgMTEgMCBSCi9JbmZvIDEwIDAg UgovSUQgWyA8IDlhYzFiY2ZiID4KICAgICAgPCA5YWMxYmNmYiA+CiAgICBdCj4+CnN0YXJ0eHJl ZgoxNDgxMQolJUVPRgo= --001a114e52384989c0055d9582ff--