Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q3SUU-0007py-4e for pgsql-hackers@arkaria.postgresql.org; Mon, 29 May 2023 02:20:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q3SUS-0001XV-KK for pgsql-hackers@arkaria.postgresql.org; Mon, 29 May 2023 02:20:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q3SUR-0001XD-SR for pgsql-hackers@lists.postgresql.org; Mon, 29 May 2023 02:20:08 +0000 Received: from mail-oa1-x30.google.com ([2001:4860:4864:20::30]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q3SUO-002R3K-Vc for pgsql-hackers@lists.postgresql.org; Mon, 29 May 2023 02:20:06 +0000 Received: by mail-oa1-x30.google.com with SMTP id 586e51a60fabf-19674cab442so2368859fac.3 for ; Sun, 28 May 2023 19:20:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685326804; x=1687918804; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NNZb/UIG00L3mbnDmMzjGgOahGSFg31XeFROvxve6MM=; b=V1azkrGYSi3G9DOo3kE3rQXp7QZPB2F50rAwsoEin3s2UmQ7khDBwMyaSTy9QSCaJp C9fGrKEA5Spt4FxWyNcOqkpUbkCuFfGlem2QkGMJUy5JkIMLWBNlmKQlEJ0BQvV5xuA1 ZkqOybwDBtBLtePp2pPanfnpQ8lEViv/HVd+iSebceRqiAA/XtQYohF7XMTtw/fPWkqs cGWhb8G0IeFai6k/TateCJvfVrTc0cticZdFNzDSQud0+pEzGB1txT79KLB7m0T+6n2g UOWwa+U85QZwwrm6YxClHInq4iLYGByruQfls+jgpBwS3WxdN3ce0nZShyUfV8fM1liM 1Mtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685326804; x=1687918804; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NNZb/UIG00L3mbnDmMzjGgOahGSFg31XeFROvxve6MM=; b=aVZxN2u4o945HxB+q3lXkiIzmkJo1HthnfFCXGfi7fqYHZ9zd+qW/RWPf6I6xO0z9d t9DOZ3630tP6djXmCy9VIJSj+71Bcrk1Lh/9lG/rr/CZ4kfGZ62V0pFLrH79djKCBaKu VtUIkiHel26IeVjG0kAa37vvcforSvO+zhOEy0Dr4Nq7VobMbGNhfXkKwxcwxNOYjL0Q jJEu3Te3sSFc81r4OfONJVcxfp9irQ0EsGaDcg1DA9oBOEVz2heKh9ILXl8I/uAxKzm0 T3PgpcedQQKJOOcTM4ZpGXqGMu7kkEBMR5xkPWU6uAuFQ/6SEcF6yc88wlsjhWFbrNxu /jKQ== X-Gm-Message-State: AC+VfDzd7Lc0/lxchdnlD1w2bRC1loLOah+QIoZJKPIr7SCDvFZZ4x+9 uH6AmyR2AlxhP9oa99vFUOOv05kuarQk2KVCRoBg04JZ X-Google-Smtp-Source: ACHHUZ4SulRlS5oyNGiCZ+0myRw0ritUAlL3sfqpWKe/X8r+me0yivwraDdTKpOY7mYB7fi/yC110kihCqSCFiALe6E= X-Received: by 2002:a05:6870:d2a6:b0:19f:3ef3:1828 with SMTP id d38-20020a056870d2a600b0019f3ef31828mr2570755oae.30.1685326803843; Sun, 28 May 2023 19:20:03 -0700 (PDT) MIME-Version: 1.0 References: <87cz2otiw3.fsf@wibble.ilmari.org> In-Reply-To: From: vignesh C Date: Mon, 29 May 2023 07:49:52 +0530 Message-ID: Subject: Re: Implement generalized sub routine find_in_log for tap test To: Andrew Dunstan Cc: Michael Paquier , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000007957ce05fccbb983" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007957ce05fccbb983 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 27 May 2023 at 17:32, Andrew Dunstan wrote: > > > On 2023-05-26 Fr 20:35, vignesh C wrote: > > On Fri, 26 May 2023 at 04:09, Michael Paquier wrote= : > > On Thu, May 25, 2023 at 06:34:20PM +0100, Dagfinn Ilmari Manns=C3=A5ker w= rote: > > However, none of the other functions in ::Utils know anything about node > objects, which makes me think it should be a method on the node itself > (i.e. in PostgreSQL::Test::Cluster) instead. Also, I think log_contains > would be a better name, since it just returns a boolean. The name > find_in_log makes me think it would return the log lines matching the > pattern, or the position of the match in the file. > > In that case, the slurp_file() call would have to be fully qualified, > since ::Cluster uses an empty import list to avoid polluting the method > namespace with imported functions. > > Hmm. connect_ok() and connect_fails() in Cluster.pm have a similar > log comparison logic, feeding from the offset of a log file. Couldn't > you use the same code across the board for everything? Note that this > stuff is parameterized so as it is possible to check if patterns match > or do not match, for multiple patterns. It seems to me that we could > use the new log finding routine there as well, so how about extending > it a bit more? You would need, at least: > - One parameter for log entries matching. > - One parameter for log entries not matching. > > I felt adding these to log_contains was making the function slightly > complex with multiple checks. I was not able to make it simple with > the approach I tried. How about having a common function > check_connect_log_contents which has the common log contents check for > connect_ok and connect_fails function like the v2-0002 patch attached. > > > + $offset =3D 0 unless defined $offset; > > > This is unnecessary, as slurp_file() handles it appropriately, and in fac= t doing this is slightly inefficient, as it will cause slurp_file to do a r= edundant seek. > > FYI there's a simpler way to say it if we wanted to: > > $offset //=3D 0; Thanks for the comment, the attached v3 version patch has the changes for the same. Regards, Vignesh --0000000000007957ce05fccbb983 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0002-Move-common-connection-log-content-verification-c.patch" Content-Disposition: attachment; filename="v3-0002-Move-common-connection-log-content-verification-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_li87sudw1 RnJvbSAwMmNkYTViYzI5MWQyZTk1MWI5NzEwODE5ODFhMzM2ZTIyYzc0ZWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMjcgTWF5IDIwMjMgMDU6MzY6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYzIDIvMl0g TW92ZSBjb21tb24gY29ubmVjdGlvbiBsb2cgY29udGVudCB2ZXJpZmljYXRpb24gY29kZQogdG8g YSBjb21tb24gZnVuY3Rpb24uCgpNb3ZlIGNvbW1vbiBjb25uZWN0aW9uIGxvZyBjb250ZW50IHZl cmlmaWNhdGlvbiBjb2RlIHRvIGEgY29tbW9uCmZ1bmN0aW9uLgotLS0KIHNyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gfCAxMjIgKysrKysrKysrKystLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQppbmRleCA0ZGY3ZGQ0ZGVjLi45MTI4 OTJlMjhiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVy LnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTIx NjgsMjEgKzIxNjgsMTkgQEAgc3ViIHBnYmVuY2gKIAogPXBvZAogCi09aXRlbSAkbm9kZS0+Y29u bmVjdF9vaygkY29ubnN0ciwgJHRlc3RfbmFtZSwgJXBhcmFtcykKKz1pdGVtICRub2RlLT5jaGVj a19jb25uZWN0X2xvZ19jb250ZW50cygkb2Zmc2V0LCAkdGVzdF9uYW1lLCAlcGFyYW1ldGVycykK IAotQXR0ZW1wdCBhIGNvbm5lY3Rpb24gd2l0aCBhIGN1c3RvbSBjb25uZWN0aW9uIHN0cmluZy4g IFRoaXMgaXMgZXhwZWN0ZWQKLXRvIHN1Y2NlZWQuCitDaGVjayBjb25uZWN0aW9uIGxvZyBjb250 ZW50cy4KIAogPW92ZXIKIAotPWl0ZW0gc3FsID0+IEI8dmFsdWU+Cis9aXRlbSAkdGVzdF9uYW1l CiAKLUlmIHRoaXMgcGFyYW1ldGVyIGlzIHNldCwgdGhpcyBxdWVyeSBpcyB1c2VkIGZvciB0aGUg Y29ubmVjdGlvbiBhdHRlbXB0Ci1pbnN0ZWFkIG9mIHRoZSBkZWZhdWx0LgorTmFtZSBvZiB0ZXN0 IGZvciBlcnJvciBtZXNzYWdlcy4KIAotPWl0ZW0gZXhwZWN0ZWRfc3Rkb3V0ID0+IEI8dmFsdWU+ Cis9aXRlbSAkb2Zmc2V0CiAKLUlmIHRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIHNldCwgbWF0 Y2hlcyBpdCB3aXRoIHRoZSBvdXRwdXQgZ2VuZXJhdGVkLgorT2Zmc2V0IG9mIHRoZSBsb2cgZmls ZS4KIAogPWl0ZW0gbG9nX2xpa2UgPT4gWyBxci9yZXF1aXJlZCBtZXNzYWdlLyBdCiAKQEAgLTIy MDAsNiArMjE5OCw1OCBAQCBwYXNzZWQgdG8gQzxUZXN0OjpNb3JlOjp1bmxpa2UoKT4uCiAKID1j dXQKIAorc3ViIGNoZWNrX2Nvbm5lY3RfbG9nX2NvbnRlbnRzCit7CisJbXkgKCRzZWxmLCAkdGVz dF9uYW1lLCAkb2Zmc2V0LCAlcGFyYW1zKSA9IEBfOworCisJbXkgKEBsb2dfbGlrZSwgQGxvZ191 bmxpa2UpOworCWlmIChkZWZpbmVkKCRwYXJhbXN7bG9nX2xpa2V9KSkKKwl7CisJCUBsb2dfbGlr ZSA9IEB7ICRwYXJhbXN7bG9nX2xpa2V9IH07CisJfQorCWlmIChkZWZpbmVkKCRwYXJhbXN7bG9n X3VubGlrZX0pKQorCXsKKwkJQGxvZ191bmxpa2UgPSBAeyAkcGFyYW1ze2xvZ191bmxpa2V9IH07 CisJfQorCisJaWYgKEBsb2dfbGlrZSBvciBAbG9nX3VubGlrZSkKKwl7CisJCW15ICRsb2dfY29u dGVudHMgPQorCQkgIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRzZWxmLT5s b2dmaWxlLCAkb2Zmc2V0KTsKKworCQl3aGlsZSAobXkgJHJlZ2V4ID0gc2hpZnQgQGxvZ19saWtl KQorCQl7CisJCQlsaWtlKCRsb2dfY29udGVudHMsICRyZWdleCwgIiR0ZXN0X25hbWU6IGxvZyBt YXRjaGVzIik7CisJCX0KKwkJd2hpbGUgKG15ICRyZWdleCA9IHNoaWZ0IEBsb2dfdW5saWtlKQor CQl7CisJCQl1bmxpa2UoJGxvZ19jb250ZW50cywgJHJlZ2V4LCAiJHRlc3RfbmFtZTogbG9nIGRv ZXMgbm90IG1hdGNoIik7CisJCX0KKwl9Cit9CisKKz1wb2QKKworPWl0ZW0gJG5vZGUtPmNvbm5l Y3Rfb2soJGNvbm5zdHIsICR0ZXN0X25hbWUsICVwYXJhbXMpCisKK0F0dGVtcHQgYSBjb25uZWN0 aW9uIHdpdGggYSBjdXN0b20gY29ubmVjdGlvbiBzdHJpbmcuICBUaGlzIGlzIGV4cGVjdGVkCit0 byBzdWNjZWVkLgorCis9b3ZlcgorCis9aXRlbSBzcWwgPT4gQjx2YWx1ZT4KKworSWYgdGhpcyBw YXJhbWV0ZXIgaXMgc2V0LCB0aGlzIHF1ZXJ5IGlzIHVzZWQgZm9yIHRoZSBjb25uZWN0aW9uIGF0 dGVtcHQKK2luc3RlYWQgb2YgdGhlIGRlZmF1bHQuCisKKz1pdGVtIGV4cGVjdGVkX3N0ZG91dCA9 PiBCPHZhbHVlPgorCitJZiB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBzZXQsIG1hdGNoZXMg aXQgd2l0aCB0aGUgb3V0cHV0IGdlbmVyYXRlZC4KKworPWJhY2sKKworPWN1dAorCiBzdWIgY29u bmVjdF9vawogewogCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVy OjpMZXZlbCArIDE7CkBAIC0yMjE1LDE2ICsyMjY1LDYgQEAgc3ViIGNvbm5lY3Rfb2sKIAkJJHNx bCA9ICJTRUxFQ1QgXCRcJGNvbm5lY3RlZCB3aXRoICRjb25uc3RyXCRcJCI7CiAJfQogCi0JbXkg KEBsb2dfbGlrZSwgQGxvZ191bmxpa2UpOwotCWlmIChkZWZpbmVkKCRwYXJhbXN7bG9nX2xpa2V9 KSkKLQl7Ci0JCUBsb2dfbGlrZSA9IEB7ICRwYXJhbXN7bG9nX2xpa2V9IH07Ci0JfQotCWlmIChk ZWZpbmVkKCRwYXJhbXN7bG9nX3VubGlrZX0pKQotCXsKLQkJQGxvZ191bmxpa2UgPSBAeyAkcGFy YW1ze2xvZ191bmxpa2V9IH07Ci0JfQotCiAJbXkgJGxvZ19sb2NhdGlvbiA9IC1zICRzZWxmLT5s b2dmaWxlOwogCiAJIyBOZXZlciBwcm9tcHQgZm9yIGEgcGFzc3dvcmQsIGFueSBjYWxsZXJzIG9m IHRoaXMgcm91dGluZSBzaG91bGQKQEAgLTIyNDUsMjAgKzIyODUsNyBAQCBzdWIgY29ubmVjdF9v awogCiAJaXMoJHN0ZGVyciwgIiIsICIkdGVzdF9uYW1lOiBubyBzdGRlcnIiKTsKIAotCWlmIChA bG9nX2xpa2Ugb3IgQGxvZ191bmxpa2UpCi0JewotCQlteSAkbG9nX2NvbnRlbnRzID0KLQkJICBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c2x1cnBfZmlsZSgkc2VsZi0+bG9nZmlsZSwgJGxvZ19s b2NhdGlvbik7Ci0KLQkJd2hpbGUgKG15ICRyZWdleCA9IHNoaWZ0IEBsb2dfbGlrZSkKLQkJewot CQkJbGlrZSgkbG9nX2NvbnRlbnRzLCAkcmVnZXgsICIkdGVzdF9uYW1lOiBsb2cgbWF0Y2hlcyIp OwotCQl9Ci0JCXdoaWxlIChteSAkcmVnZXggPSBzaGlmdCBAbG9nX3VubGlrZSkKLQkJewotCQkJ dW5saWtlKCRsb2dfY29udGVudHMsICRyZWdleCwgIiR0ZXN0X25hbWU6IGxvZyBkb2VzIG5vdCBt YXRjaCIpOwotCQl9Ci0JfQorCSRzZWxmLT5jaGVja19jb25uZWN0X2xvZ19jb250ZW50cygkdGVz dF9uYW1lLCAkbG9nX2xvY2F0aW9uLCAlcGFyYW1zKTsKIH0KIAogPXBvZApAQCAtMjI3NCwxMiAr MjMwMSw2IEBAIHRvIGZhaWwuCiAKIElmIHRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIHNldCwg bWF0Y2hlcyBpdCB3aXRoIHRoZSBvdXRwdXQgZ2VuZXJhdGVkLgogCi09aXRlbSBsb2dfbGlrZSA9 PiBbIHFyL3JlcXVpcmVkIG1lc3NhZ2UvIF0KLQotPWl0ZW0gbG9nX3VubGlrZSA9PiBbIHFyL3By b2hpYml0ZWQgbWVzc2FnZS8gXQotCi1TZWUgQzxjb25uZWN0X29rKC4uLik+LCBhYm92ZS4KLQog PWJhY2sKIAogPWN1dApAQCAtMjI4OSwxNiArMjMxMCw2IEBAIHN1YiBjb25uZWN0X2ZhaWxzCiAJ bG9jYWwgJFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsK IAlteSAoJHNlbGYsICRjb25uc3RyLCAkdGVzdF9uYW1lLCAlcGFyYW1zKSA9IEBfOwogCi0JbXkg KEBsb2dfbGlrZSwgQGxvZ191bmxpa2UpOwotCWlmIChkZWZpbmVkKCRwYXJhbXN7bG9nX2xpa2V9 KSkKLQl7Ci0JCUBsb2dfbGlrZSA9IEB7ICRwYXJhbXN7bG9nX2xpa2V9IH07Ci0JfQotCWlmIChk ZWZpbmVkKCRwYXJhbXN7bG9nX3VubGlrZX0pKQotCXsKLQkJQGxvZ191bmxpa2UgPSBAeyAkcGFy YW1ze2xvZ191bmxpa2V9IH07Ci0JfQotCiAJbXkgJGxvZ19sb2NhdGlvbiA9IC1zICRzZWxmLT5s b2dmaWxlOwogCiAJIyBOZXZlciBwcm9tcHQgZm9yIGEgcGFzc3dvcmQsIGFueSBjYWxsZXJzIG9m IHRoaXMgcm91dGluZSBzaG91bGQKQEAgLTIzMTYsMjAgKzIzMjcsNyBAQCBzdWIgY29ubmVjdF9m YWlscwogCQlsaWtlKCRzdGRlcnIsICRwYXJhbXN7ZXhwZWN0ZWRfc3RkZXJyfSwgIiR0ZXN0X25h bWU6IG1hdGNoZXMiKTsKIAl9CiAKLQlpZiAoQGxvZ19saWtlIG9yIEBsb2dfdW5saWtlKQotCXsK LQkJbXkgJGxvZ19jb250ZW50cyA9Ci0JCSAgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJw X2ZpbGUoJHNlbGYtPmxvZ2ZpbGUsICRsb2dfbG9jYXRpb24pOwotCi0JCXdoaWxlIChteSAkcmVn ZXggPSBzaGlmdCBAbG9nX2xpa2UpCi0JCXsKLQkJCWxpa2UoJGxvZ19jb250ZW50cywgJHJlZ2V4 LCAiJHRlc3RfbmFtZTogbG9nIG1hdGNoZXMiKTsKLQkJfQotCQl3aGlsZSAobXkgJHJlZ2V4ID0g c2hpZnQgQGxvZ191bmxpa2UpCi0JCXsKLQkJCXVubGlrZSgkbG9nX2NvbnRlbnRzLCAkcmVnZXgs ICIkdGVzdF9uYW1lOiBsb2cgZG9lcyBub3QgbWF0Y2giKTsKLQkJfQotCX0KKwkkc2VsZi0+Y2hl Y2tfY29ubmVjdF9sb2dfY29udGVudHMoJHRlc3RfbmFtZSwgJGxvZ19sb2NhdGlvbiwgJXBhcmFt cyk7CiB9CiAKID1wb2QKLS0gCjIuMzQuMQoK --0000000000007957ce05fccbb983 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Remove-duplicate-find_in_log-sub-routines-from-ta.patch" Content-Disposition: attachment; filename="v3-0001-Remove-duplicate-find_in_log-sub-routines-from-ta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_li87sud20 RnJvbSAxMmRlYTM1YmJiMjBkMmVlMDlhM2RmZWExZjY3ODk1ZDA4MTEwMDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMjYgTWF5IDIwMjMgMjA6MDc6MzAgKzA1MzAKU3ViamVjdDogW1BBVENIIHYzIDEvMl0g UmVtb3ZlIGR1cGxpY2F0ZSBmaW5kX2luX2xvZyBzdWIgcm91dGluZXMgZnJvbSB0YXAKIHRlc3Rz LgoKUmVtb3ZlIGR1cGxpY2F0ZSBmaW5kX2luX2xvZyBzdWIgcm91dGluZXMgZnJvbSB0YXAgdGVz dHMuCi0tLQogc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDNfcGVlci5wbCAgICAgICAgIHwg MTcgKystLS0tLS0tLQogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSAg ICAgIHwgMTUgKysrKysrKysrCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1p dC5wbCAgICAgfCAzMyArKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAz M19yZXBsYXlfdHNwX2Ryb3BzLnBsICAgfCAxNSArKy0tLS0tLS0KIC4uLi90LzAzNV9zdGFuZGJ5 X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8IDI2ICsrKy0tLS0tLS0tLS0tLQogNSBmaWxl cyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwM19wZWVyLnBsIGIvc3JjL3Rlc3QvYXV0aGVu dGljYXRpb24vdC8wMDNfcGVlci5wbAppbmRleCAzMjcyZTUyY2FlLi4yYTAzNWMyZDBkIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwM19wZWVyLnBsCisrKyBiL3NyYy90 ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAzX3BlZXIucGwKQEAgLTY5LDE3ICs2OSw2IEBAIHN1YiB0 ZXN0X3JvbGUKIAl9CiB9CiAKLSMgRmluZCAkcGF0dGVybiBpbiBsb2cgZmlsZSBvZiAkbm9kZS4K LXN1YiBmaW5kX2luX2xvZwotewotCW15ICgkbm9kZSwgJG9mZnNldCwgJHBhdHRlcm4pID0gQF87 Ci0KLQlteSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUt PmxvZ2ZpbGUsICRvZmZzZXQpOwotCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykgPD0gMCk7Ci0K LQlyZXR1cm4gJGxvZyA9fiBtLyRwYXR0ZXJuLzsKLX0KLQogbXkgJG5vZGUgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUnKTsKICRub2RlLT5pbml0OwogJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX2Nvbm5lY3Rpb25zID0gb25cbiIpOwpAQCAt OTEsOSArODAsOSBAQCByZXNldF9wZ19oYmEoJG5vZGUsICdwZWVyJyk7CiAjIENoZWNrIGlmIHBl ZXIgYXV0aGVudGljYXRpb24gaXMgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uCiBteSAkbG9n X29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJyk7Ci1p ZiAoZmluZF9pbl9sb2coCi0JCSRub2RlLCAkbG9nX29mZnNldCwKLQkJcXIvcGVlciBhdXRoZW50 aWNhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0vKSkKK2lmICgkbm9kZS0+ bG9nX2NvbnRhaW5zKAorCQlxci9wZWVyIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQg b24gdGhpcyBwbGF0Zm9ybS8pLAorCQkkbG9nX29mZnNldCwpCiB7CiAJcGxhbiBza2lwX2FsbCA9 PiAncGVlciBhdXRoZW50aWNhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0n OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5w bSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggYmFlYTBm Y2QxYy4uNGRmN2RkNGRlYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVy LnBtCkBAIC0yNTM2LDYgKzI1MzYsMjEgQEAgc3ViIGxvZ19jb250ZW50CiB9CiAKIAorPXBvZAor Cis9aXRlbSBsb2dfY29udGFpbnMocGF0dGVybiwgb2Zmc2V0KQorCitGaW5kIHBhdHRlcm4gaW4g bG9nZmlsZSBvZiBub2RlIGFmdGVyIG9mZnNldCBieXRlLgorCis9Y3V0CisKK3N1YiBsb2dfY29u dGFpbnMKK3sKKwlteSAoJHNlbGYsICRwYXR0ZXJuLCAkb2Zmc2V0KSA9IEBfOworCisJcmV0dXJu IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRzZWxmLT5sb2dmaWxlLCAkb2Zm c2V0KSA9fiBtLyRwYXR0ZXJuLzsKK30KKwogPXBvZAogCiA9aXRlbSAkbm9kZS0+cnVuX2xvZygu Li4pCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5w bCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCmluZGV4IGExYWJh MTZlMTQuLjk1YWNmOWUzNTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3Jl cGxzbG90X2xpbWl0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xp bWl0LnBsCkBAIC0xNjEsOCArMTYxLDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1 cCgkbm9kZV9zdGFuZGJ5KTsKIAogJG5vZGVfc3RhbmRieS0+c3RvcDsKIAotb2soICFmaW5kX2lu X2xvZygKLQkJJG5vZGVfc3RhbmRieSwKK29rKCAhJG5vZGVfc3RhbmRieS0+bG9nX2NvbnRhaW5z KAogCQkicmVxdWVzdGVkIFdBTCBzZWdtZW50IFswLTlBLUZdKyBoYXMgYWxyZWFkeSBiZWVuIHJl bW92ZWQiKSwKIAknY2hlY2sgdGhhdCByZXF1aXJlZCBXQUwgc2VnbWVudHMgYXJlIHN0aWxsIGF2 YWlsYWJsZScpOwogCkBAIC0xODQsOCArMTgzLDggQEAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDSEVDS1BPSU5UOyIpOwogbXkgJGludmFsaWRhdGVkID0gMDsKIGZvciAo bXkgJGkgPSAwOyAkaSA8IDEwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2Rl ZmF1bHQ7ICRpKyspCiB7Ci0JaWYgKGZpbmRfaW5fbG9nKAotCQkJJG5vZGVfcHJpbWFyeSwgJ2lu dmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90ICJyZXAxIicsCisJaWYgKCRub2Rl X3ByaW1hcnktPmxvZ19jb250YWlucygKKwkJCSdpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGlj YXRpb24gc2xvdCAicmVwMSInLAogCQkJJGxvZ3N0YXJ0KSkKIAl7CiAJCSRpbnZhbGlkYXRlZCA9 IDE7CkBAIC0yMDcsNyArMjA2LDcgQEAgaXMoJHJlc3VsdCwgInJlcDF8Znx0fGxvc3R8IiwKIG15 ICRjaGVja3BvaW50X2VuZGVkID0gMDsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDEwICogJFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7ICRpKyspCiB7Ci0JaWYgKGZpbmRf aW5fbG9nKCRub2RlX3ByaW1hcnksICJjaGVja3BvaW50IGNvbXBsZXRlOiAiLCAkbG9nc3RhcnQp KQorCWlmICgkbm9kZV9wcmltYXJ5LT5sb2dfY29udGFpbnMoImNoZWNrcG9pbnQgY29tcGxldGU6 ICIsICRsb2dzdGFydCkpCiAJewogCQkkY2hlY2twb2ludF9lbmRlZCA9IDE7CiAJCWxhc3Q7CkBA IC0yMzcsOCArMjM2LDcgQEAgJG5vZGVfc3RhbmRieS0+c3RhcnQ7CiBteSAkZmFpbGVkID0gMDsK IGZvciAobXkgJGkgPSAwOyAkaSA8IDEwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1l b3V0X2RlZmF1bHQ7ICRpKyspCiB7Ci0JaWYgKGZpbmRfaW5fbG9nKAotCQkJJG5vZGVfc3RhbmRi eSwKKwlpZiAoJG5vZGVfc3RhbmRieS0+bG9nX2NvbnRhaW5zKAogCQkJInJlcXVlc3RlZCBXQUwg c2VnbWVudCBbMC05QS1GXSsgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIiwKIAkJCSRsb2dzdGFy dCkpCiAJewpAQCAtMzgxLDggKzM3OSw3IEBAIG15ICRtc2dfbG9nZ2VkID0gMDsKIG15ICRtYXhf YXR0ZW1wdHMgPSAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKIHdo aWxlICgkbWF4X2F0dGVtcHRzLS0gPj0gMCkKIHsKLQlpZiAoZmluZF9pbl9sb2coCi0JCQkkbm9k ZV9wcmltYXJ5MywKKwlpZiAoJG5vZGVfcHJpbWFyeTMtPmxvZ19jb250YWlucygKIAkJCSJ0ZXJt aW5hdGluZyBwcm9jZXNzICRzZW5kZXJwaWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwi cmVwM1wiIiwKIAkJCSRsb2dzdGFydCkpCiAJewpAQCAtNDA2LDggKzQwMyw4IEBAICRtc2dfbG9n Z2VkID0gMDsKICRtYXhfYXR0ZW1wdHMgPSAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVv dXRfZGVmYXVsdDsKIHdoaWxlICgkbWF4X2F0dGVtcHRzLS0gPj0gMCkKIHsKLQlpZiAoZmluZF9p bl9sb2coCi0JCQkkbm9kZV9wcmltYXJ5MywgJ2ludmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNh dGlvbiBzbG90ICJyZXAzIicsCisJaWYgKCRub2RlX3ByaW1hcnkzLT5sb2dfY29udGFpbnMoCisJ CQknaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgInJlcDMiJywKIAkJCSRs b2dzdGFydCkpCiAJewogCQkkbXNnX2xvZ2dlZCA9IDE7CkBAIC00NDYsMTggKzQ0Myw0IEBAIHN1 YiBnZXRfbG9nX3NpemUKIAlyZXR1cm4gKHN0YXQgJG5vZGUtPmxvZ2ZpbGUpWzddOwogfQogCi0j IGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFmdGVyICRvZmYtdGggYnl0ZQotc3ViIGZp bmRfaW5fbG9nCi17Ci0JbXkgKCRub2RlLCAkcGF0LCAkb2ZmKSA9IEBfOwotCi0JJG9mZiA9IDAg dW5sZXNzIGRlZmluZWQgJG9mZjsKLQlteSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOwotCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykg PD0gJG9mZik7Ci0KLQkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOwotCi0JcmV0dXJuICRsb2cg PX4gbS8kcGF0LzsKLX0KLQogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAzM19yZXBsYXlfdHNwX2Ryb3BzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MzNfcmVwbGF5X3RzcF9kcm9wcy5wbAppbmRleCAwYTM1YTdiZGE2Li4zMDdjMzBiYzZiIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzM19yZXBsYXlfdHNwX2Ryb3BzLnBsCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDMzX3JlcGxheV90c3BfZHJvcHMucGwKQEAgLTEzNSwyMiAr MTM1LDExIEBAIHdoaWxlICgkbWF4X2F0dGVtcHRzLS0gPj0gMCkKIHsKIAlsYXN0CiAJICBpZiAo Ci0JCWZpbmRfaW5fbG9nKAotCQkJJG5vZGVfc3RhbmRieSwKKwkJJG5vZGVfc3RhbmRieS0+bG9n X2NvbnRhaW5zKAogCQkJcXIhV0FSTklORzogKCBbQS1aMC05XSs6KT8gY3JlYXRpbmcgbWlzc2lu ZyBkaXJlY3Rvcnk6IHBnX3RibHNwYy8hLAogCQkJJGxvZ3N0YXJ0KSk7CiAJdXNsZWVwKDEwMF8w MDApOwogfQogb2soJG1heF9hdHRlbXB0cyA+IDAsICJpbnZhbGlkIGRpcmVjdG9yeSBjcmVhdGlv biBpcyBkZXRlY3RlZCIpOwogCi1kb25lX3Rlc3RpbmcoKTsKLQotIyBmaW5kICRwYXQgaW4gbG9n ZmlsZSBvZiAkbm9kZSBhZnRlciAkb2ZmLXRoIGJ5dGUKLXN1YiBmaW5kX2luX2xvZwotewotCW15 ICgkbm9kZSwgJHBhdCwgJG9mZikgPSBAXzsKLQotCW15ICRsb2cgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6c2x1cnBfZmlsZSgkbm9kZS0+bG9nZmlsZSwgJG9mZik7Ci0KLQlyZXR1cm4gJGxv ZyA9fiBtLyRwYXQvOwotfQorZG9uZV90ZXN0aW5nKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2Fs X2RlY29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCmluZGV4IDY0YmVlYzRiZDMuLjQ4MGU2ZDZjYWEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI4LDIw ICsyOCw2IEBAIG15ICRyZXM7CiBteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNp Y2FsJzsKIG15ICRzdGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lID0gJ3N0YW5kYnlfcGh5c2ljYWwn OwogCi0jIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFmdGVyICRvZmYtdGggYnl0ZQot c3ViIGZpbmRfaW5fbG9nCi17Ci0JbXkgKCRub2RlLCAkcGF0LCAkb2ZmKSA9IEBfOwotCi0JJG9m ZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKLQlteSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOwotCXJldHVybiAwIGlmIChsZW5ndGgo JGxvZykgPD0gJG9mZik7Ci0KLQkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOwotCi0JcmV0dXJu ICRsb2cgPX4gbS8kcGF0LzsKLX0KLQogIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3Mg cGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgogIyBnaXZlbiBib29s ZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNj ZW50IHN0YXRlLgogc3ViIHdhaXRfZm9yX3htaW5zCkBAIC0yMzUsMTQgKzIyMSwxMiBAQCBzdWIg Y2hlY2tfZm9yX2ludmFsaWRhdGlvbgogCW15ICRpbmFjdGl2ZV9zbG90ID0gJHNsb3RfcHJlZml4 IC4gJ2luYWN0aXZlc2xvdCc7CiAKIAkjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAotCW9rKCBm aW5kX2luX2xvZygKLQkJCSRub2RlX3N0YW5kYnksCisJb2soICRub2RlX3N0YW5kYnktPmxvZ19j b250YWlucygKIAkJCSJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiRp bmFjdGl2ZV9zbG90XCIiLAogCQkJJGxvZ19zdGFydCksCiAJCSJpbmFjdGl2ZXNsb3Qgc2xvdCBp bnZhbGlkYXRpb24gaXMgbG9nZ2VkICR0ZXN0X25hbWUiKTsKIAotCW9rKCBmaW5kX2luX2xvZygK LQkJCSRub2RlX3N0YW5kYnksCisJb2soICRub2RlX3N0YW5kYnktPmxvZ19jb250YWlucygKIAkJ CSJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiRhY3RpdmVfc2xvdFwi IiwKIAkJCSRsb2dfc3RhcnQpLAogCQkiYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBs b2dnZWQgJHRlc3RfbmFtZSIpOwpAQCAtNjU3LDE0ICs2NDEsMTIgQEAgJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKAogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVf c3RhbmRieSk7CiAKICMgbWVzc2FnZSBzaG91bGQgbm90IGJlIGlzc3VlZAotb2soICFmaW5kX2lu X2xvZygKLQkJJG5vZGVfc3RhbmRieSwKK29rKCAhJG5vZGVfc3RhbmRieS0+bG9nX2NvbnRhaW5z KAogCQkiaW52YWxpZGF0aW5nIG9ic29sZXRlIHNsb3QgXCJub19jb25mbGljdF9pbmFjdGl2ZXNs b3RcIiIsICRsb2dzdGFydCksCiAJJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBu b3QgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIGNvbmZsaWN0X3Rlc3QnCiApOwogCi1vayggIWZpbmRf aW5fbG9nKAotCQkkbm9kZV9zdGFuZGJ5LAorb2soICEkbm9kZV9zdGFuZGJ5LT5sb2dfY29udGFp bnMoCiAJCSJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgc2xvdCBcIm5vX2NvbmZsaWN0X2FjdGl2ZXNs b3RcIiIsICRsb2dzdGFydCksCiAJJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbm90 IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90ZXN0JwogKTsKLS0gCjIuMzQuMQoK --0000000000007957ce05fccbb983--