<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>
GitLab
</title>

<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>

<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: hsla(0,0%,100%,.01) 0 0 1px;
}
body {
font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: hsla(0,0%,100%,.01) 0 0 1px; font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">

<p class="details" style="font-style: italic; color: #626168;">
<a href="https://gitlab.com/asosedkin">Alexander Sosedkin</a> created a merge request: <a href="https://gitlab.com/gnutls/gnutls/-/merge_requests/2116">!2116</a>
</p>
<div class="branch">
Project:Branches: asosedkin/gnutls:tests-improve-eagain-randomization to gnutls/gnutls:master
</div>
<div class="author">
Author: Alexander Sosedkin
</div>
<div class="assignee">
Assignees: 
</div>
<div class="reviewer">
Reviewers: 
</div>
<div class="md gl-mt-5" style="position: relative; z-index: 1; color: #3a383f; word-wrap: break-word; margin-top: 1rem;">

<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px 0px 1rem; padding: 0;">
<li style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">tests/eagain-common.h: improve EAGAIN randomization logic</li>
</ul>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Before regressing in <a href="https://gitlab.com/gnutls/gnutls/-/commit/d821485782334c01a956ac9f5b1da97d4df4c573" title="tests: eagain: moved to cmocka and enhanced for TLS1.3" class="gfm gfm-commit has-tooltip" data-original="d821485782334c01a956ac9f5b1da97d4df4c573" data-link="false" data-link-reference="false" data-commit="d821485782334c01a956ac9f5b1da97d4df4c573" data-project="179611" data-project-path="gnutls/gnutls" data-container="body" data-placement="top" data-reference-type="commit" style='font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; font-size: 95%; margin-top: 0px;'>d8214857</a>,
it was a <code style='font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;'>static unsigned char rnd = 0; if (rnd++ % 2 == 0)</code>.
Thus the pattern was a steady (0, 1, 0, 1, 0, 1, ...) for each caller,
with no real randomization aside from the multithreaded scenarios,
not even the starting position in the sequence.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">After regressing in <a href="https://gitlab.com/gnutls/gnutls/-/commit/d821485782334c01a956ac9f5b1da97d4df4c573" title="tests: eagain: moved to cmocka and enhanced for TLS1.3" class="gfm gfm-commit has-tooltip" data-original="d821485782334c01a956ac9f5b1da97d4df4c573" data-link="false" data-link-reference="false" data-commit="d821485782334c01a956ac9f5b1da97d4df4c573" data-project="179611" data-project-path="gnutls/gnutls" data-container="body" data-placement="top" data-reference-type="commit" style='font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; font-size: 95%; margin-top: 0px;'>d8214857</a>,
it became an <code style='font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;'>unsigned int rnd = time(0); if (rnd++ % 3 == 0)</code>, making it
(0s for an entire second, 1s for another second, 1s for another second, ...)
with the starting point of the sequence being the only randomness.
At the same time, it clearly intended to be a (0, 1, 1, 0, 1, 1, ...)
with a starting position randomization.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">This potentially overengineered
<code style='font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;'>if (<boundary>) <reset>; rnd++ % 6 < 3</code> approach
aims for a (0, 0, 0, 1, 1, 1, ...)
with the starting sequence point randomization smudge
and occasional hiccups on the second boundaries.
The primary goal is to speed up the tests; the specific sequence is chosen
to cover both the consecutives up to 3 and the transitions
with the starting point evenly smudged in between the runs,
while keeping the infrequent hiccups
to allow for weirder patterns to appear.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Signed-off-by: Alexander Sosedkin <a href="mailto:asosedkin@redhat.com" style="margin-top: 0px;">asosedkin@redhat.com</a></p>
<h2 id="user-content-checklist" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">Checklist<a href="#checklist" aria-label="Link to heading 'Checklist'" data-heading-content="Checklist" class="anchor" style="margin-top: 0px;"></a>
</h2>
<ul class="task-list" dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px 0px 1rem; padding: 0;">
<li class="task-list-item" style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" checked disabled aria-label="Check option: Commits have Signed-off-by: with name/author being identical to the commit author" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Commits have <code style='font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;'>Signed-off-by:</code> with name/author being identical to the commit author</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Code modified for feature" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Code modified for feature</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Test suite updated with functionality tests" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Test suite updated with functionality tests</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Test suite updated with negative tests" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Test suite updated with negative tests</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Documentation updated / NEWS entry present (for non-trivial changes)" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Documentation updated / NEWS entry present (for non-trivial changes)</li>
</ul>
<h2 id="user-content-reviewers-checklist" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">Reviewer's checklist:<a href="#reviewers-checklist" aria-label="Link to heading 'Reviewer's checklist:'" data-heading-content="Reviewer's checklist:" class="anchor" style="margin-top: 0px;"></a>
</h2>
<ul class="task-list" dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px; padding: 0;">
<li class="task-list-item" style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Any issues marked for closing are addressed" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Any issues marked for closing are addressed</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: There is a test suite reasonably covering new functionality or modifications" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> There is a test suite reasonably covering new functionality or modifications</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Function naming, parameters, return values, types, etc., are consistent and according to…" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Function naming, parameters, return values, types, etc., are consistent and according to <code style='font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;'>CONTRIBUTION.md</code>
</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: This feature/change has adequate documentation added" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> This feature/change has adequate documentation added</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: No obvious mistakes in the code" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> No obvious mistakes in the code</li>
</ul>
</div>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #626168;">

<br>
Reply to this email directly or <a href="https://gitlab.com/gnutls/gnutls/-/merge_requests/2116">view it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.com">gitlab.com</a>. <a href="https://gitlab.com/-/namespace/17175643/sent_notifications/5-02s6hotns0ei5bcnp4qew53iw-a84t7/unsubscribe" target="_blank" rel="noopener noreferrer">Unsubscribe</a> from this thread · <a href="https://gitlab.com/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.com/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<span style="color: transparent; font-size: 0; display: none; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0;">
Notification message regarding https://gitlab.com/gnutls/gnutls/-/merge_requests/2116 at 1782748414
</span>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Merge request","url":"https://gitlab.com/gnutls/gnutls/-/merge_requests/2116"}}</script>


</p>
</div>
</body>
</html>