it 1.2.3-korg'/> <meta name='robots' content='noindex, nofollow'/> <link rel='stylesheet' type='text/css' href='/cgit-data/cgit.css'/> <script type='text/javascript' src='/cgit.js'></script> <link rel='shortcut icon' href='/favicon.ico'/> <link rel='alternate' title='Atom feed' href='http://git.opnfv.org/yardstick/atom/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0' type='application/atom+xml'/> <link rel='vcs-git' href='https://git.opnfv.org/yardstick' title='yardstick Git repository'/> </head> <body> <div id="lfcollabprojects-header"> <div class="gray-diagonal"> <div class="header-inner"> <a id="lfcollabprojects-logo" href="http://collabprojects.linuxfoundation.org" >Linux Foundation Collaborative Projects</a > </div> </div> </div> <div id='cgit'><table id='header'> <tr> <td class='logo' rowspan='2'><a href='/'><img src='/cgit-data/cgit.png' alt='cgit logo'/></a></td> <td class='main'><a href='/'>index</a> : <a href='/yardstick/'>yardstick</a></td><td class='form'><form method='get'> <input type='hidden' name='id' value='395bef41759c09e73310bf9244c929013fa3097e'/><select name='h' onchange='this.form.submit();'> <option value='master'>master</option> <option value='stable/brahmaputra'>stable/brahmaputra</option> <option value='stable/colorado'>stable/colorado</option> <option value='stable/danube'>stable/danube</option> <option value='stable/euphrates'>stable/euphrates</option> <option value='stable/fraser'>stable/fraser</option> <option value='stable/gambia'>stable/gambia</option> <option value='stable/hunter'>stable/hunter</option> <option value='stable/iruya'>stable/iruya</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'></td><td class='sub right'>Grokmirror user</td></tr></table> <table class='tabs'><tr><td> <a href='/yardstick/?h=opnfv-7.2.0'>summary</a><a href='/yardstick/refs/?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>refs</a><a href='/yardstick/log/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0'>log</a><a class='active' href='/yardstick/tree/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>tree</a><a href='/yardstick/commit/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>commit</a><a href='/yardstick/diff/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>diff</a><a href='/yardstick/stats/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0'>stats</a></td><td class='form'><form class='right' method='get' action='/yardstick/log/docs/testing/user/userguide/06-result-store-InfluxDB.rst'> <input type='hidden' name='h' value='opnfv-7.2.0'/><input type='hidden' name='id' value='395bef41759c09e73310bf9244c929013fa3097e'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/yardstick/tree/?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>root</a>/<a href='/yardstick/tree/docs?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>docs</a>/<a href='/yardstick/tree/docs/testing?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>testing</a>/<a href='/yardstick/tree/docs/testing/user?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>user</a>/<a href='/yardstick/tree/docs/testing/user/userguide?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>userguide</a>/<a href='/yardstick/tree/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>06-result-store-InfluxDB.rst</a></div><div class='content'>blob: 7479278899fcae623b285d48cd52003279df7038 (<a href='/yardstick/plain/docs/testing/user/userguide/06-result-store-InfluxDB.rst?h=opnfv-7.2.0&id=395bef41759c09e73310bf9244c929013fa3097e'>plain</a>) <table summary='blob content' class='blob'> <tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a> <a id='n2' href='#n2'>2</a> <a id='n3' href='#n3'>3</a> <a id='n4' href='#n4'>4</a> <a id='n5' href='#n5'>5</a> <a id='n6' href='#n6'>6</a> <a id='n7' href='#n7'>7</a> <a id='n8' href='#n8'>8</a> <a id='n9' href='#n9'>9</a> <a id='n10' href='#n10'>10</a> <a id='n11' href='#n11'>11</a> <a id='n12' href='#n12'>12</a> <a id='n13' href='#n13'>13</a> <a id='n14' href='#n14'>14</a> <a id='n15' href='#n15'>15</a> <a id='n16' href='#n16'>16</a> <a id='n17' href='#n17'>17</a> <a id='n18' href='#n18'>18</a> <a id='n19' href='#n19'>19</a> <a id='n20' href='#n20'>20</a> <a id='n21' href='#n21'>21</a> <a id='n22' href='#n22'>22</a> <a id='n23' href='#n23'>23</a> <a id='n24' href='#n24'>24</a> <a id='n25' href='#n25'>25</a> <a id='n26' href='#n26'>26</a> <a id='n27' href='#n27'>27</a> <a id='n28' href='#n28'>28</a> <a id='n29' href='#n29'>29</a> <a id='n30' href='#n30'>30</a> <a id='n31' href='#n31'>31</a> <a id='n32' href='#n32'>32</a> <a id='n33' href='#n33'>33</a> <a id='n34' href='#n34'>34</a> <a id='n35' href='#n35'>35</a> <a id='n36' href='#n36'>36</a> <a id='n37' href='#n37'>37</a> <a id='n38' href='#n38'>38</a> <a id='n39' href='#n39'>39</a> <a id='n40' href='#n40'>40</a> <a id='n41' href='#n41'>41</a> <a id='n42' href='#n42'>42</a> <a id='n43' href='#n43'>43</a> <a id='n44' href='#n44'>44</a> <a id='n45' href='#n45'>45</a> <a id='n46' href='#n46'>46</a> <a id='n47' href='#n47'>47</a> <a id='n48' href='#n48'>48</a> <a id='n49' href='#n49'>49</a> <a id='n50' href='#n50'>50</a> <a id='n51' href='#n51'>51</a> <a id='n52' href='#n52'>52</a> <a id='n53' href='#n53'>53</a> <a id='n54' href='#n54'>54</a> <a id='n55' href='#n55'>55</a> <a id='n56' href='#n56'>56</a> <a id='n57' href='#n57'>57</a> <a id='n58' href='#n58'>58</a> <a id='n59' href='#n59'>59</a> <a id='n60' href='#n60'>60</a> <a id='n61' href='#n61'>61</a> <a id='n62' href='#n62'>62</a> <a id='n63' href='#n63'>63</a> <a id='n64' href='#n64'>64</a> <a id='n65' href='#n65'>65</a> <a id='n66' href='#n66'>66</a> <a id='n67' href='#n67'>67</a> <a id='n68' href='#n68'>68</a> <a id='n69' href='#n69'>69</a> <a id='n70' href='#n70'>70</a> <a id='n71' href='#n71'>71</a> <a id='n72' href='#n72'>72</a> <a id='n73' href='#n73'>73</a> <a id='n74' href='#n74'>74</a> <a id='n75' href='#n75'>75</a> <a id='n76' href='#n76'>76</a> <a id='n77' href='#n77'>77</a> <a id='n78' href='#n78'>78</a> <a id='n79' href='#n79'>79</a> <a id='n80' href='#n80'>80</a> <a id='n81' href='#n81'>81</a> <a id='n82' href='#n82'>82</a> <a id='n83' href='#n83'>83</a> <a id='n84' href='#n84'>84</a> <a id='n85' href='#n85'>85</a> <a id='n86' href='#n86'>86</a> </pre></td> <td class='lines'><pre><code><style> @media only all and (prefers-color-scheme: dark) { .highlight .hll { background-color: #49483e } .highlight .c { color: #75715e } /* Comment */ .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ .highlight .k { color: #66d9ef } /* Keyword */ .highlight .l { color: #ae81ff } /* Literal */ .highlight .n { color: #f8f8f2 } /* Name */ .highlight .o { color: #f92672 } /* Operator */ .highlight .p { color: #f8f8f2 } /* Punctuation */ .highlight .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ } </style><div class="highlight"><pre><span></span><span class="cp">.. This work is licensed under a Creative Commons Attribution 4.0 International</span> <span class="cp">.. License.</span> <span class="cp">.. http://creativecommons.org/licenses/by/4.0</span> <span class="cp">.. (c) OPNFV, 2016 Huawei Technologies Co.,Ltd and others.</span> <span class="gh">==============================================</span> <span class="gh">Store Other Project's Test Results in InfluxDB</span> <span class="gh">==============================================</span> <span class="gh">Abstract</span> <span class="gh">========</span> <span class="p">..</span> <span class="nt">_Framework:</span> https://wiki.opnfv.org/download/attachments/6827660/wiki.png?version=1&modificationDate=1470298075000&api=v2 This chapter illustrates how to run plug-in test cases and store test results into community's InfluxDB. The framework is shown in Framework_. <span class="p">..</span> <span class="ow">image</span><span class="p">::</span> images/InfluxDB_store.png <span class="nc">:width:</span> <span class="nf">800px</span> <span class="nc">:alt:</span> <span class="nf">Store Other Project's Test Results in InfluxDB</span> <span class="gh">Store Storperf Test Results into Community's InfluxDB</span> <span class="gh">=====================================================</span> <span class="p">..</span> <span class="nt">_Influxdb:</span> https://git.opnfv.org/cgit/yardstick/tree/yardstick/dispatcher/influxdb.py <span class="p">..</span> <span class="nt">_Mingjiang:</span> limingjiang@huawei.com <span class="p">..</span> <span class="nt">_Visual:</span> https://wiki.opnfv.org/download/attachments/6827660/tc074.PNG?version=1&modificationDate=1470298075000&api=v2 <span class="p">..</span> <span class="nt">_Login:</span> http://testresults.opnfv.org/grafana/login As shown in Framework_, there are two ways to store Storperf test results into community's InfluxDB: <span class="m">1.</span> Yardstick executes Storperf test case (TC074), posting test job to Storperf container via ReST API. After the test job is completed, Yardstick reads test results via ReST API from Storperf and posts test data to the influxDB. <span class="m">2.</span> Additionally, Storperf can run tests by itself and post the test result directly to the InfluxDB. The method for posting data directly to influxDB will be supported in the future. Our plan is to support rest-api in D release so that other testing projects can call the rest-api to use yardstick dispatcher service to push data to yardstick's influxdb database. For now, influxdb only support line protocol, and the json protocol is deprecated. Take ping test case for example, the raw_result is json format like this: <span class="se">::</span> <span class="s"> "benchmark": {</span> <span class="s"> "timestamp": 1470315409.868095,</span> <span class="s"> "errors": "",</span> <span class="s"> "data": {</span> <span class="s"> "rtt": {</span> <span class="s"> "ares": 1.125</span> <span class="s"> }</span> <span class="s"> },</span> <span class="s"> "sequence": 1</span> <span class="s"> },</span> <span class="s"> "runner_id": 2625</span> } With the help of "influxdb_line_protocol", the json is transform to like below as a line string: <span class="se">::</span> <span class="s"> 'ping,deploy_scenario=unknown,host=athena.demo,installer=unknown,pod_name=unknown,</span> <span class="s"> runner_id=2625,scenarios=Ping,target=ares.demo,task_id=77755f38-1f6a-4667-a7f3-</span> <span class="s"> 301c99963656,version=unknown rtt.ares=1.125 1470315409868094976'</span> So, for data output of json format, you just need to transform json into line format and call influxdb api to post the data into the database. All this function has been implemented in Influxdb_. If you need support on this, please contact Mingjiang_. <span class="se">::</span> <span class="s"> curl -i -XPOST 'http://104.197.68.199:8086/write?db=yardstick' --</span> <span class="s"> data-binary 'ping,deploy_scenario=unknown,host=athena.demo,installer=unknown, ...'</span> Grafana will be used for visualizing the collected test data, which is shown in Visual_. Grafana can be accessed by Login_. <span class="p">..</span> <span class="ow">image</span><span class="p">::</span> images/results_visualization.png <span class="nc">:width:</span> <span class="nf">800px</span> <span class="nc">:alt:</span> <span class="nf">results visualization</span> </pre></div>