From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2FE88A0540; Mon, 20 Jul 2020 09:12:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EED991BF82; Mon, 20 Jul 2020 09:12:37 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id AE3BE1BEDE; Mon, 20 Jul 2020 09:12:34 +0200 (CEST) IronPort-SDR: lAW5Y9S243CrffjKIVUAwvYKim7KDPfAXYT7COTomK319XGapzMboU/3mQPsACdITAB+rS83if 2KOgS2P67c9g== X-IronPort-AV: E=McAfee;i="6000,8403,9687"; a="137347754" X-IronPort-AV: E=Sophos;i="5.75,374,1589266800"; d="scan'208";a="137347754" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2020 00:12:33 -0700 IronPort-SDR: ClvL6BeENRcqO+Lrcp1jDytZ1HwhojOlNQV1mBsFQZR3e4rIZEsoKmbvciGIql9aZpBGqJnbaa 3kwCfT4sPhLg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,374,1589266800"; d="scan'208";a="327444197" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga007.jf.intel.com with ESMTP; 20 Jul 2020 00:12:33 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 20 Jul 2020 00:12:32 -0700 Received: from shsmsx154.ccr.corp.intel.com (10.239.6.54) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 20 Jul 2020 00:12:32 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.22]) by SHSMSX154.ccr.corp.intel.com ([169.254.7.32]) with mapi id 14.03.0439.000; Mon, 20 Jul 2020 15:12:30 +0800 From: "Tu, Lijuan" To: "dkirichok@iol.unh.edu" , "dts@dpdk.org" CC: "mb@smartsharesystems.com" , "lylavoie@iol.unh.edu" , "thomas@monjalon.net" , "dev@dpdk.org" , "david.marchand@redhat.com" , "Yigit, Ferruh" , "arybchenko@solarflare.com" , "i.dyukov@samsung.com" , "rasland@mellanox.com" , "j.hendergart@f5.com" , "dliu@iol.unh.edu" , "ohilyard@iol.unh.edu" Thread-Topic: [dts] [PATCH] speed-capabilities: added Speed Capabilities test case Thread-Index: AQHWVGRjfSGryyFkxE2EFwkTguHbX6kQIXHg Date: Mon, 20 Jul 2020 07:12:29 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BC822A4@SHSMSX101.ccr.corp.intel.com> References: <20200707134039.13165-1-dkirichok@iol.unh.edu> In-Reply-To: <20200707134039.13165-1-dkirichok@iol.unh.edu> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dts] [PATCH] speed-capabilities: added Speed Capabilities test case X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" QXBwbGllZCwgdGhhbmtzDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog ZHRzIDxkdHMtYm91bmNlc0BkcGRrLm9yZz4gT24gQmVoYWxmIE9mIGRraXJpY2hva0Bpb2wudW5o LmVkdQ0KPiBTZW50OiAyMDIw5bm0N+aciDfml6UgMjE6NDENCj4gVG86IGR0c0BkcGRrLm9yZw0K PiBDYzogbWJAc21hcnRzaGFyZXN5c3RlbXMuY29tOyBseWxhdm9pZUBpb2wudW5oLmVkdTsgdGhv bWFzQG1vbmphbG9uLm5ldDsNCj4gZGV2QGRwZGsub3JnOyBkYXZpZC5tYXJjaGFuZEByZWRoYXQu Y29tOyBZaWdpdCwgRmVycnVoDQo+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgYXJ5YmNoZW5r b0Bzb2xhcmZsYXJlLmNvbTsgaS5keXVrb3ZAc2Ftc3VuZy5jb207DQo+IHJhc2xhbmRAbWVsbGFu b3guY29tOyBqLmhlbmRlcmdhcnRAZjUuY29tOyBkbGl1QGlvbC51bmguZWR1Ow0KPiBvaGlseWFy ZEBpb2wudW5oLmVkdTsgRGFuaWVsIEtpcmljaG9rIDxka2lyaWNob2tAaW9sLnVuaC5lZHU+DQo+ IFN1YmplY3Q6IFtkdHNdIFtQQVRDSF0gc3BlZWQtY2FwYWJpbGl0aWVzOiBhZGRlZCBTcGVlZCBD YXBhYmlsaXRpZXMgdGVzdCBjYXNlDQo+IA0KPiBGcm9tOiBEYW5pZWwgS2lyaWNob2sgPGRraXJp Y2hva0Bpb2wudW5oLmVkdT4NCj4gDQo+IEFkZGVkIHRlc3QgY2FzZSBmb3IgY2hlY2tpbmcgc3Bl ZWQgY2FwYWJpbGl0aWVzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtpcmljaG9rIDxk a2lyaWNob2tAaW9sLnVuaC5lZHU+DQo+IC0tLQ0KPiAgY29uZi9zcGVlZF9jYXBhYmlsaXRpZXMu Y2ZnICAgICAgICAgICAgICAgICB8ICAgNCArDQo+ICB0ZXN0X3BsYW5zL3NwZWVkX2NhcGFiaWxp dGllc190ZXN0X3BsYW4ucnN0IHwgIDg0ICsrKysrKysrKysrKysrDQo+ICB0ZXN0cy9UZXN0U3Vp dGVfc3BlZWRfY2FwYWJpbGl0aWVzLnB5ICAgICAgIHwgMTIwICsrKysrKysrKysrKysrKysrKysr DQo+ICAzIGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgY29uZi9zcGVlZF9jYXBhYmlsaXRpZXMuY2ZnICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4g dGVzdF9wbGFucy9zcGVlZF9jYXBhYmlsaXRpZXNfdGVzdF9wbGFuLnJzdA0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL1Rlc3RTdWl0ZV9zcGVlZF9jYXBhYmlsaXRpZXMucHkNCj4gDQo+IGRp ZmYgLS1naXQgYS9jb25mL3NwZWVkX2NhcGFiaWxpdGllcy5jZmcgYi9jb25mL3NwZWVkX2NhcGFi aWxpdGllcy5jZmcgbmV3IGZpbGUNCj4gbW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMC4uYzIyZjUz MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2NvbmYvc3BlZWRfY2FwYWJpbGl0aWVzLmNmZw0K PiBAQCAtMCwwICsxLDQgQEANCj4gK1tzdWl0ZV0NCj4gKyMgVGhlIGZvcm1hdCBmb3IgZW50ZXJp bmcgZXhwZWN0ZWQgc3BlZWRzIGlzIHsnPElOVEVSRkFDRT4nOic8RVhQRUNURUQNCj4gK1NQRUVE PicsLi4ufSAjIFVuaXQgZm9yIHNwZWVkIG11c3QgYmUgaW4gRyBvciBNDQo+ICtleHBlY3RlZF9z cGVlZHM9eydpbnRlcmZhY2UxJzogJzEwRycsICdpbnRlcmZhY2UyJzogJzEwME0nfQ0KPiBkaWZm IC0tZ2l0IGEvdGVzdF9wbGFucy9zcGVlZF9jYXBhYmlsaXRpZXNfdGVzdF9wbGFuLnJzdA0KPiBi L3Rlc3RfcGxhbnMvc3BlZWRfY2FwYWJpbGl0aWVzX3Rlc3RfcGxhbi5yc3QNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMjgyMTYxMg0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL3Rlc3RfcGxhbnMvc3BlZWRfY2FwYWJpbGl0aWVzX3Rlc3RfcGxhbi5yc3QNCj4gQEAg LTAsMCArMSw4NCBAQA0KPiArLi4gIyBCU0QgTElDRU5TRQ0KPiArICAgICMNCj4gKyAgICAjIENv cHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ICsgICAgIyBDb3B5cmlnaHQgwqkgMjAxOFssIDIwMTldIFRoZSBVbml2ZXJzaXR5IG9m IE5ldyBIYW1wc2hpcmUuIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuDQo+ICsgICAgIyBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiArICAgICMNCj4gKyAgICAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiArICAgICMgbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zDQo+ICsgICAgIyBhcmUgbWV0Og0KPiArICAgICMNCj4gKyAgICAjICAgKiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0K PiArICAgICMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4NCj4gKyAgICAjICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICAgICMgICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbg0KPiArICAgICMgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAgICAjICAgICBkaXN0cmlidXRpb24uDQo+ICsgICAg IyAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVz IG9mIGl0cw0KPiArICAgICMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICAgICMgICAgIGZyb20gdGhpcyBzb2Z0 d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKyAgICAj DQo+ICsgICAgIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M REVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+ICsgICAgIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiArICAgICMg TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E DQo+IEZJVE5FU1MgRk9SDQo+ICsgICAgIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiArICAgICMgT1dORVIg T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElO Q0lERU5UQUwsDQo+ICsgICAgIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg REFNQUdFUyAoSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+ICsgICAgIyBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVTRSwN Cj4gKyAgICAjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X RVZFUiBDQVVTRUQgQU5EDQo+IE9OIEFOWQ0KPiArICAgICMgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiArICAg ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRg0KPiBUSEUgVVNFDQo+ICsgICAgIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArDQo+ICs9PT09 PT09PT09PT09PT09PT09PT09PQ0KPiArU3BlZWQgQ2FwYWJpbGl0aWVzIFRlc3QNCj4gKz09PT09 PT09PT09PT09PT09PT09PT09DQo+ICsNCj4gK1RoZSBTcGVlZCBDYXBhYmlsaXRpZXMgVGVzdCBj aGVja3MgdGhlIHNwZWVkcyB0aGF0IHRoZSBkZXZpY2UgbGlzdHMgYW5kDQo+ICtjb21wYXJlcyBp dCB0byBhIHVzZXItZGVmaW5lZCBzZXQgb2YgZXhwZWN0ZWQgc3BlZWRzIHNldCBpbiB0aGUNCj4g YGBzcGVlZF9jYXBhYmlsaXRpZXMuY2ZnYGAuDQo+ICsNCj4gK1ByZXJlcXVpc2l0ZXMNCj4gKz09 PT09PT09PT09PT0NCj4gKw0KPiArSWYgdXNpbmcgdmZpbyB0aGUga2VybmVsIG11c3QgYmUgPj0g My42KyBhbmQgVlQtZCBtdXN0IGJlIGVuYWJsZWQgaW4NCj4gK2Jpb3MuV2hlbiB1c2luZyB2Zmlv LCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBsb2FkIHRoZSB2ZmlvDQo+ICtkcml2ZXIg YW5kIGJpbmQgaXQgdG8gdGhlIGRldmljZSB1bmRlciB0ZXN0OjoNCj4gKw0KPiArICAgbW9kcHJv YmUgdmZpbw0KPiArICAgbW9kcHJvYmUgdmZpby1wY2kNCj4gKyAgIHVzZXJ0b29scy9kcGRrLWRl dmJpbmQucHkgLS1iaW5kPXZmaW8tcGNpIGRldmljZV9idXNfaWQNCj4gKw0KPiArQXNzdW1pbmcg dGhhdCBwb3J0cyBgYDBgYCBhbmQgYGAxYGAgb2YgdGhlIHRlc3QgdGFyZ2V0IGFyZSBkaXJlY3Rs eQ0KPiArY29ubmVjdGVkIHRvIHRoZSB0cmFmZmljIGdlbmVyYXRvciwgbGF1bmNoIHRoZSBgYHRl c3RwbWRgYCBhcHBsaWNhdGlvbg0KPiArd2l0aCB0aGUgZm9sbG93aW5nDQo+ICthcmd1bWVudHM6 Og0KPiArDQo+ICsgIC4vYnVpbGQvYXBwL3Rlc3RwbWQgLS0gLWkgLS1wb3J0bWFzaz0weDMNCj4g Kw0KPiArU3RhcnQgcGFja2V0IGZvcndhcmRpbmcgaW4gdGhlIGBgdGVzdHBtZGBgIGFwcGxpY2F0 aW9uIHdpdGggdGhlDQo+ICtgYHN0YXJ0YGAgY29tbWFuZC4gVGhlbiwgZm9yIGVhY2ggcG9ydCBv biB0aGUgdGFyZ2V0IG1ha2UgdGhlIFRyYWZmaWMNCj4gK0dlbmVyYXRvciB0cmFuc21pdCBhIHBh Y2tldCB0byB0aGUgcG9ydCBvZiBhcmJpdHJhcnkgc2l6ZSBsZXNzIHRoYW4gdGhlDQo+ICtNVFUg b2YgdGhlIHRhcmdldCBwb3J0LCBjaGVja2luZyB0aGF0IHRoZSBzYW1lIGFtb3VudCBvZiBmcmFt ZXMgYW5kDQo+ICtieXRlcyBhcmUgcmVjZWl2ZWQgYmFjayBieSB0aGUgVHJhZmZpYyBHZW5lcmF0 b3IgZnJvbSB0aGUgcG9ydC4NCj4gKw0KPiArRW5zdXJlIHRoYXQgdGhlIGBgc3BlZWRfY2FwYWJp bGl0aWVzLmNmZ2BgIGZpbGUgY29ycmVjdGx5IHJlZmxlY3RzIHRoZQ0KPiArc3BlZWRzIHRoZSBk ZXZpY2UgaXMgZXhwZWN0ZWQgdG8gcnVuIGF0Lg0KPiArDQo+ICsNCj4gK1Rlc3QgQ2FzZSA6IFNw ZWVkIENhcGFiaWxpdGllcyBUZXN0DQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KPiArDQo+ICsxLiBVc2UgdGVzdHBtZCB0byByZXRyaWV2ZSB0aGUgc3BlZWQgaW5mb3Jt YXRpb24gdGhhdCB0aGUgaW50ZXJmYWNlIGlzIGxpbmtlZCBhdDo6DQo+ICsNCj4gKyAgICAgIHRl c3RwbWQ+IHNob3cgcG9ydCBpbmZvIDxQT1JUX0lEPg0KPiArDQo+ICsyLiBDb21wYXJlcyB0aGUg c3BlZWQgdmFsdWUgYWdhaW5zdCB0aGUgcmF0ZSBpbiB0aGUgc3BlZWRfY2FwYWJpbGl0aWVzLmNm ZyBmaWxlLg0KPiArICAgVGhlIHN1cHBvcnRlZCBvcHRpb25zIGZvciBleHBlY3RlZCBzcGVlZHMg YXJlIDFHLCAxMEcsIDI1RywgNDBHLCBhbmQgMTAwRy4NCj4gRWFjaCBpbnRlcmZhY2UgbXVzdCBo YXZlIGFuIGV4cGVjdGVkIHNwZWVkIGFzc29jaWF0ZWQgd2l0aCBpdC4NCj4gKyAgIEV4YW1wbGUg ZmlsZSBiZWxvdzo6DQo+ICsNCj4gKyAgICAgIFtzdWl0ZV0NCj4gKyAgICAgIGV4cGVjdGVkX3Nw ZWVkcz17J2ludGVyZmFjZTEnOiAnMTBHJywgJ2ludGVyZmFjZTInOiAnMTAwTSd9DQo+ICsNCj4g Kw0KPiArMy4gVmVyaWZpZXMgdGhhdCB0aGUgc3BlZWRzIG1hdGNoZXMgYWNjb3JkaW5nbHkuDQo+ ICsNCj4gKzQuIFJlcGVhdHMgdGhlIHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBOSUMgYW5kIGludGVy ZmFjZSBmb3VuZCBvbiB0aGUgc3lzdGVtLg0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvVGVzdFN1aXRl X3NwZWVkX2NhcGFiaWxpdGllcy5weQ0KPiBiL3Rlc3RzL1Rlc3RTdWl0ZV9zcGVlZF9jYXBhYmls aXRpZXMucHkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMjVjNDVl NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rlc3RzL1Rlc3RTdWl0ZV9zcGVlZF9jYXBhYmls aXRpZXMucHkNCj4gQEAgLTAsMCArMSwxMjAgQEANCj4gKyMgQlNEIExJQ0VOU0UNCj4gKyMNCj4g KyMgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gKyMgQ29weXJpZ2h0IMKpIDIwMThbLCAyMDE5XSBUaGUgVW5pdmVyc2l0eSBv ZiBOZXcgSGFtcHNoaXJlLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLg0KPiArIyBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiArIw0KPiArIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgIw0KPiArbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zICMNCj4gK2Fy ZSBtZXQ6DQo+ICsjDQo+ICsjICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArIyAgICogUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQNCj4gKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiArIyAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArIyAgICAgZGlzdHJpYnV0aW9u Lg0KPiArIyAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhl IG5hbWVzIG9mIGl0cw0KPiArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsjICAgICBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsjDQo+ICsj IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0K PiBDT05UUklCVVRPUlMgIw0KPiArIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgIw0KPiArTElNSVRFRCBUTywgVEhFIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCj4gRk9SICMNCj4g K0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU SEUNCj4gQ09QWVJJR0hUICMNCj4gK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S IEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLCAjDQo+ICtTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQo+ICMN Cj4gK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7IExPU1MgT0YNCj4gVVNFLCAjDQo+ICtEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTg0KPiBBTlkgIw0KPiArVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VCAjDQo+ICsoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRQ0KPiBVU0UgIw0KPiArT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCj4gKw0KPiArIiIiDQo+ ICtEUERLIFRlc3Qgc3VpdGUuDQo+ICsiIiINCj4gK2ltcG9ydCB1dGlscw0KPiArZnJvbSBwbWRf b3V0cHV0IGltcG9ydCBQbWRPdXRwdXQNCj4gK2Zyb20gdGVzdF9jYXNlIGltcG9ydCBUZXN0Q2Fz ZQ0KPiArDQo+ICsNCj4gK2NsYXNzIFRlc3RTcGVlZENhcGFiaWxpdGllcyhUZXN0Q2FzZSk6DQo+ ICsgICAgZGVmIHNldF91cF9hbGwoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBS dW4gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdCBzdWl0ZS4NCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIHNlbGYucG9ydHMgPSBzZWxmLmR1dC5nZXRfcG9ydHMoKQ0KPiArICAgICAgICBzZWxm LnBvcnRzX3NvY2tldCA9IHNlbGYuZHV0LmdldF9udW1hX2lkKHNlbGYucG9ydHNbMF0pDQo+ICsN Cj4gKyAgICAgICAgZm9yIHBvcnQgaW4gc2VsZi5wb3J0czoNCj4gKyAgICAgICAgICAgIHNlbGYu dGVzdGVyLnNlbmRfZXhwZWN0KGYiaWZjb25maWcNCj4ge3NlbGYudGVzdGVyLmdldF9pbnRlcmZh Y2Uoc2VsZi50ZXN0ZXIuZ2V0X2xvY2FsX3BvcnQocG9ydCkpfSBtdHUgNTAwMCINCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgIiMgIikNCj4gKw0KPiArICAgICAgICBz ZWxmLnBtZG91dCA9IFBtZE91dHB1dChzZWxmLmR1dCkNCj4gKyAgICAgICAgc2VsZi52bV9lbnZf ZG9uZSA9IEZhbHNlDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9zcGVlZF9jYXBhYmlsaXRpZXMoc2Vs Zik6DQo+ICsgICAgICAgIHNlbGYucG1kb3V0LnN0YXJ0X3Rlc3RwbWQoIkRlZmF1bHQiKQ0KPiAr DQo+ICsgICAgICAgIGNmZ19jb250ZW50ID0gc2VsZi5nZXRfc3VpdGVfY2ZnKCkNCj4gKyAgICAg ICAgZXhwZWN0ZWRfc3BlZWRzID0gY2ZnX2NvbnRlbnQuZ2V0KCdleHBlY3RlZF9zcGVlZHMnKQ0K PiArDQo+ICsgICAgICAgIGRldGVjdGVkX2ludGVyZmFjZXMgPSBbXQ0KPiArDQo+ICsgICAgICAg IGZvciBwb3J0IGluIHNlbGYucG9ydHM6DQo+ICsgICAgICAgICAgICBpbnRlcmZhY2VfbmFtZSA9 DQo+ICsgc2VsZi50ZXN0ZXIuZ2V0X2ludGVyZmFjZShzZWxmLnRlc3Rlci5nZXRfbG9jYWxfcG9y dChwb3J0KSkNCj4gKw0KPiArICAgICAgICAgICAgIyBHaXZlcyB0aGUgc3BlZWQgaW4gTWIvcw0K PiArICAgICAgICAgICAgaW50ZXJmYWNlX3NwZWVkID0gc2VsZi5wbWRvdXQuZ2V0X3BvcnRfbGlu a19zcGVlZChwb3J0KQ0KPiArDQo+ICsgICAgICAgICAgICBzZWxmLnZlcmlmeShpbnRlcmZhY2Vf bmFtZSBpbiBleHBlY3RlZF9zcGVlZHMsIGYiVGhlIGludGVyZmFjZQ0KPiB7aW50ZXJmYWNlX25h bWV9IGRvZXMgbm90IGhhdmUgYW4gZXhwZWN0ZWQgIg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmInNwZWVkDQo+ICsgYXNzb2Np YXRlZCB3aXRoIGl0LiIpDQo+ICsNCj4gKyAgICAgICAgICAgIGRldGVjdGVkX2ludGVyZmFjZXMu YXBwZW5kKGludGVyZmFjZV9uYW1lKQ0KPiArDQo+ICsgICAgICAgICAgICBleHBlY3RlZF9zcGVl ZCA9IGV4cGVjdGVkX3NwZWVkc1tpbnRlcmZhY2VfbmFtZV0NCj4gKw0KPiArICAgICAgICAgICAg IyBJc29sYXRlcyB0aGUgdW5pdCAoRWl0aGVyIE0gb3IgRykNCj4gKyAgICAgICAgICAgIGV4cGVj dGVkX3NwZWVkX3VuaXQgPSAnJy5qb2luKGkgZm9yIGkgaW4gZXhwZWN0ZWRfc3BlZWQgaWYNCj4g KyBub3QgaS5pc2RpZ2l0KCkpDQo+ICsNCj4gKyAgICAgICAgICAgICMgUmVtb3ZlcyB0aGUgdW5p dCBmcm9tIHRoZSBzcGVlZA0KPiArICAgICAgICAgICAgZXhwZWN0ZWRfc3BlZWQgPSAnJy5qb2lu KGkgZm9yIGkgaW4gZXhwZWN0ZWRfc3BlZWQgaWYNCj4gKyBpLmlzZGlnaXQoKSkNCj4gKw0KPiAr ICAgICAgICAgICAgc2VsZi52ZXJpZnkobGVuKGludGVyZmFjZV9zcGVlZCkgPiAwLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgZiJBIHZhbGlkIHNwZWVkIGNvdWxkIG5vdCBiZSByZWFkIGZv ciB0aGUNCj4gKyBpbnRlcmZhY2Uge2ludGVyZmFjZV9uYW1lfS4iKQ0KPiArDQo+ICsgICAgICAg ICAgICAjIENvbnZlcnRzIEdiL3MgdG8gTWIvcyBmb3IgY29uc2lzdGVudCBjb21wYXJpc29uDQo+ ICsgICAgICAgICAgICBpZiBleHBlY3RlZF9zcGVlZF91bml0ID09ICJHIjoNCj4gKyAgICAgICAg ICAgICAgICBleHBlY3RlZF9zcGVlZCArPSAiMDAwIg0KPiArDQo+ICsgICAgICAgICAgICBzZWxm LnZlcmlmeShpbnRlcmZhY2Vfc3BlZWQgPT0gZXhwZWN0ZWRfc3BlZWQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmIkRldGVjdGVkIHNwZWVkOiB7aW50ZXJmYWNlX3NwZWVkfSBNYi9zIGZv ciB0aGUgaW50ZXJmYWNlDQo+IHtpbnRlcmZhY2VfbmFtZX0sICINCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYiYnV0IGV4cGVjdGVkIHNwZWVkOiB7ZXhwZWN0ZWRfc3BlZWR9IE1iL3MiKQ0K PiArDQo+ICsgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGV4cGVjdGVkX3NwZWVkcy5pdGVtcygp Og0KPiArICAgICAgICAgICAgc2VsZi52ZXJpZnkoa2V5IGluIGRldGVjdGVkX2ludGVyZmFjZXMs IGYiVGhlIGludGVyZmFjZSB7a2V5fSBleHBlY3RlZCB0aGUNCj4gc3BlZWQge3ZhbHVlfSBpbiAi DQo+ICsNCj4gKyAic3BlZWRfY2FwYWJpbGl0aWVzLmNmZyBmaWxlLCBidXQgaXQgZGlkIG5vdCBk ZXRlY3QgdGhhdCBpbnRlcmZhY2UuIikNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd24oc2VsZik6 DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IGNhc2UuDQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLmR1dC5raWxsX2FsbCgpDQo+ICsgICAgICAg IHNlbGYucG1kb3V0LnN0YXJ0X3Rlc3RwbWQoIkRlZmF1bHQiLCAiLS1wb3J0bWFzaz0lcyAtLXBv cnQtDQo+IHRvcG9sb2d5PWxvb3AiICUgdXRpbHMuY3JlYXRlX21hc2soc2VsZi5wb3J0cyksDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0PXNlbGYucG9ydHNfc29j a2V0KQ0KPiArICAgICAgICBwb3J0c19udW0gPSBsZW4oc2VsZi5wb3J0cykNCj4gKyAgICAgICAg IyBsaW5rIHVwIHRlc3QsIHRvIGF2b2lkIGZhaWxpbmcgZnVydGhlciB0ZXN0cyBpZiBsaW5rIHdh cyBkb3duDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKHBvcnRzX251bSk6DQo+ICsgICAgICAg ICAgICAjIHNvbWV0aW1lcyBvdXRwdXQgdGV4dCBtZXNzaW5nIHVwIHRlc3RwbWQgcHJvbXB0IHNv IHRyaW1tZWQgcHJvbXB0DQo+ICsgICAgICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgic2V0 IGxpbmstdXAgcG9ydCAlZCIgJSBpLCAiPiIpDQo+ICsgICAgICAgICMgc3RhcnQgcG9ydHMsIHRv IGF2b2lkIGZhaWxpbmcgZnVydGhlciB0ZXN0cyBpZiBwb3J0cyBhcmUgc3RvcHBlZA0KPiArICAg ICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicG9ydCBzdGFydCBhbGwiLCAidGVzdHBtZD4gIiwg MTAwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsN Cj4gKyAgICBkZWYgdGVhcl9kb3duX2FsbChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAg ICAgIFJ1biBhZnRlciBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAg ICBpZiBzZWxmLnZtX2Vudl9kb25lOg0KPiArICAgICAgICAgICAgc2VsZi5kZXN0cm95X3ZtX2Vu digpDQo+ICsgICAgICAgIHNlbGYuZHV0LmtpbGxfYWxsKCkNCj4gLS0NCj4gMi4xNy4xDQoNCg==