Closed Bug 1650363 Opened 4 years ago Closed 4 years ago

Performance testing of HTTP3 in Firefox using only xpcshell tests

Categories

(Core :: Networking: HTTP, task, P2)

task

Tracking

()

RESOLVED FIXED
81 Branch
Tracking Status
firefox81 --- fixed

People

(Reporter: dragana, Assigned: tarek)

References

(Blocks 1 open bug)

Details

(Whiteboard: [necko-triaged])

Attachments

(1 file)

Implement a simple xpcshell tests that:

  • download a large amount of data over one stream
  • upload a large amount of data over a single stream
  • download a large number of small responses that should fill the flow-control window (number of streams and size TBA)
  • upload a large number of small responses that should fill the flow-control window (number of streams and size TBA)

Set up different network conditions:

  • bandwidth 10Mbps, 20Mbps, 50Mbps and 100Mbps
  • delay by 10ms, 50ms, 100ms and 250ms
  • loss 1%, 2%, 5%, 10% and 20%

Compare the performance to the performance of TCP sending/receiving large amount of data. Use NewReno, Cubic and BBR as the congestion control algorithm.

This tests will estimate performance of of neqo and its integration into Firefox networking stack, but it will not be influence by DOM, layout and all upper code. The complete Firefox performance will be tested in bug 1650358.

Michal, can you own this?

Assignee: nobody → michal.novotny

Michal , for now we only need xpcshell test and Tarek will integrate it into test automation. I will e-mail you some detail.

Blocks: 1656779
Pushed by tziade@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1ccda1d0c3ea
Performance testing of HTTP3 in Firefox using only xpcshell tests r=sparky
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 81 Branch
Regressions: 1656793
+        {
+            'source': buildconfig.topsrcdir,
+            'pattern': 'browser/config/**'
+        },
+        {
+            'source': buildconfig.topsrcdir,
+            'pattern':  'build/moz.configure/**'
+        },
+        {
+            'source': buildconfig.topobjdir,
+            'pattern': 'dist/bin/**',
+        },
+        {
+            'source': buildconfig.topobjdir,
+            'base': '_tests/modules',
+            'pattern': '**',
+            'dest': 'dist/bin/modules'
+        },
+        {
+            'source': buildconfig.topobjdir,
+            'pattern': 'dist/plugins/**'
+        },
+        {
+            'source': buildconfig.topsrcdir,
+            'base': 'netwerk/test/http3serverDB',
+            'pattern': '**',
+            'dest': 'netwerk/test/http3serverDB',
         }

No wonder why... this is very broad, and turned the perftest archives from a 19MB tarball into a 1.5GB one. Which is also a lot of storage use. I think this should be backed out.

Backed out changeset 1ccda1d0c3ea (bug 1650363) for causing a serious regression in packaging time

Backout link: https://hg.mozilla.org/integration/autoland/rev/283caf8887b3b34ed80921105b41a6dd0e828418

Status: RESOLVED → REOPENED
Flags: needinfo?(michal.novotny)
Resolution: FIXED → ---
Target Milestone: 81 Branch → ---

(In reply to Mike Hommey [:glandium] from comment #10)

No wonder why... this is very broad, and turned the perftest archives from a 19MB tarball into a 1.5GB one. Which is also a lot of storage use. I think this should be backed out.

Sorry I have not noticed it was so big on some platforms. I need the ability to run xpcshell, which is not present in target.tar.bz2
In my attempts to use a subset of dist/bin I had several issues, I could not find the right subset, so I included it fully.

Mike, is there an existing way to have the xpcshell binary without having to get all of dist/bin ?

Flags: needinfo?(michal.novotny) → needinfo?(mh+mozilla)
Assignee: michal.novotny → tarek

xpcshell is in target.common.tests.tar.gz. Check how the xpcshell tests use xpcshell...

Why do you package browser/config/** and build/moz.configure/**? They're not big, but they shouldn't be necessary.

Flags: needinfo?(mh+mozilla)

(In reply to Mike Hommey [:glandium] from comment #13)

xpcshell is in target.common.tests.tar.gz. Check how the xpcshell tests use xpcshell...

ok

Why do you package browser/config/** and build/moz.configure/**? They're not big, but they shouldn't be necessary.

They are required by the MozbuildObject object in my (non mach) runner.

They are required by the MozbuildObject object in my (non mach) runner.

None of the other test runners need that.

Come to think of it, why is this not using the xpcshell test harness?

Come to think of it, why is this not using the xpcshell test harness?

because we provide an environment to run performance tests, and performance tests can be xpcshell tests or browsertime tests.
and I don't want it to rely on mozharness, which forces an architecture and design we don't want.

We wrap runxpcshelltests.py and that works fine. The only remaining issue is to have the xpcshell binary
working in the CI without pulling the whole dist/bin dir.

So, target.common.tests.tar.gz does contain the xpshell binary but it's dynamically linked to libs that are not
there. You can't run it without all the *dylib files

dyld: Library not loaded: @executable_path/libnss3.dylib
  Referenced from: /Users/tarek/Downloads/tarball/bin/xpcshell
  Reason: image not found

That brings me back to the reason why I grabbed everyhing under dist/bin in my test package.
But that would grow again the package. I guess those libs are available in target.tar.bz2, target.dmg and that's what mozharness does.

I'll try to do something with that.

Maybe a simple solution would be to have an artifact that provides everything required to run xpcshell tests directly (the binary and all its libs)

Flags: needinfo?(mh+mozilla)

(that makes me wonder why we don't ship the xpcshell binary in the main target artifact)

runxpcshelltests should be dealing with those details if you pass the right arguments (--xre-path).
I don't get why you need build system stuff if you're using runxpcshelltests.

(that makes me wonder why we don't ship the xpcshell binary in the main target artifact)

Because it's not something we ship with Firefox.

Flags: needinfo?(mh+mozilla)
Pushed by tziade@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/dfa35557a3aa
Performance testing of HTTP3 in Firefox using only xpcshell tests r=michal,sparky
Status: REOPENED → RESOLVED
Closed: 4 years ago4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 81 Branch
Depends on: 1659982
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: