Commit Graph

377 Commits

Author SHA1 Message Date
Lorenzo Blasa
457767c7cc Ready needs to be able to handle asynchronous code
Summary:
A previous diff introduced the isReady state as to make it possible to serve HTML content sooner than we are ready.

This worked great on debugging. As I was testing a release, it was discovered that there was a race condition and the server was not ready when it was already handling upgrade events.

To solve this, I've added another state flag in the form of a promise.

This one, can be waited on. This is used then during upgrade events as we can safely wait until the server is ready to accept incoming connections before proceeding with the upgrade.

Problem is shown below:

{F1080003241}
{F1080003356}

Reviewed By: passy

Differential Revision: D48829453

fbshipit-source-id: e148a392bbe66dd91710e32871e270c8950e25c2
2023-08-30 09:52:00 -07:00
Lorenzo Blasa
2858259497 Launch early, even if not ready
Summary:
Flipper Launcher downloads, unpacks, launches Flipper, and closes itself.

This is fine except for the fact that Flipper may be initiating and thus there's a gap of a few seconds until engineers see the main Flipper UI.

This change improves this by launching earlier, even if just showing a loading page until Flipper is actually ready.

Reviewed By: passy, aigoncharov

Differential Revision: D48824479

fbshipit-source-id: aa6147a09f313d80592c9b08d089660ba73773a4
2023-08-30 05:08:26 -07:00
Lorenzo Blasa
3e8f94ceda iOS get devices/targets/simulators cleanup
Summary: ^

Reviewed By: passy

Differential Revision: D48781211

fbshipit-source-id: 71133c07d15ca6a380d85e582d55cbdb192b5a19
2023-08-30 04:24:05 -07:00
Lorenzo Blasa
0045f15e2a isAvailable to isIdbAvailable
Summary: Make it more clear what are we checking about.

Reviewed By: aigoncharov

Differential Revision: D48781145

fbshipit-source-id: c3c03b407dc7f47730a3fb80de769243768b34ec
2023-08-30 04:24:05 -07:00
Lorenzo Blasa
03c0874f30 Query devices should be async
Summary: ^

Reviewed By: aigoncharov

Differential Revision: D48781102

fbshipit-source-id: c987be90c7bca7dbab40a89b389ee86ef2230393
2023-08-30 04:24:05 -07:00
Pascal Hartig
d4d8c965eb Show iOS version in launcher
Summary:
A little hacky because we currently have too many implementations for getting devices but lblasa is working on cleaning this up. Once that's done, we should add some tests for this.

Changelog: Show the iOS version of simulators in the launcher window

Reviewed By: lblasa

Differential Revision: D48777923

fbshipit-source-id: 18846520feba8eb10b6417f87bd802ffaabb1dff
2023-08-29 04:55:46 -07:00
Lorenzo Blasa
ef6e3df9df Remove the client from error log
Summary: Removing this information from the error as it will cause duplicated error tasks.

Reviewed By: passy

Differential Revision: D48646678

fbshipit-source-id: 26e5525318b4720568275a5086df00f21b7d2836
2023-08-24 10:05:17 -07:00
Lorenzo Blasa
865d551f8e Increase max payload size
Summary: ^

Reviewed By: passy, antonk52

Differential Revision: D48644784

fbshipit-source-id: 2cd0aeed94c31553243e1b335adbd4089feb0d7e
2023-08-24 10:05:17 -07:00
Lorenzo Blasa
1360e906f8 Centralise sessionId to a dedicated place
Summary:
The sessionId is just uuid() which is held by the config. This changes moves that to a single place.

This achieves two goals:
1) Makes it very clear where is created and what value it holds
2) It allows us to know the sessionId even before the config is available. This becomes useful as we can start logging to Scribe earlier.

Reviewed By: passy

Differential Revision: D48601829

fbshipit-source-id: c54d86d76f0b58d2b59f8dd1c45d7f345c4a84c3
2023-08-24 06:18:39 -07:00
Lorenzo Blasa
6405a7bfdd Hook with FB logger
Summary:
This change replaces the existing logging infra with the one defined and exposed in flipper-server-core.

Functionality remains the same with the addition of having support for Scribe.

Reviewed By: aigoncharov

Differential Revision: D48515246

fbshipit-source-id: 7970f6ad069821ee4f15136adc8da40d0b1fb0c7
2023-08-24 06:18:39 -07:00
Lorenzo Blasa
87bf73f1d5 FBLogger for flipper-server-core
Summary: ^

Reviewed By: passy

Differential Revision: D48557327

fbshipit-source-id: 0112dec9a1a7f0afddcc459459a9278bbbeb3fc7
2023-08-24 06:18:39 -07:00
Pascal Hartig
bb4090f529 Make intern headers configurable
Summary: The one-off hack for slog makes this hard to refactor, so I've added a headers field, putting the caller in charge of this.

Reviewed By: LukeDefeo

Differential Revision: D48564065

fbshipit-source-id: f8e78e9b8597fd3131bf3741197e6179807ad5da
2023-08-23 07:40:49 -07:00
Pascal Hartig
d484fb964c Add CPE X2P lookup support
Summary:
Basically a one-to-one conversion of https://www.internalfb.com/code/fbsource/[3171372e9b534c2ea0f318800cbd6de421e9d2d1]/fbcode/common/rust/cpe/src/

This is the information we need to connect to the local x2p daemon that allows us to talk to interngraph without vpn.

Reviewed By: lblasa

Differential Revision: D48562550

fbshipit-source-id: 8abff11f8ef76b16f6700eb89edabdb284306bb1
2023-08-23 07:40:49 -07:00
Lorenzo Blasa
c93a781247 ScribeMessage can now be used instead
Summary: As the type is now defined in flipper-common, it can be used.

Reviewed By: antonk52

Differential Revision: D48557043

fbshipit-source-id: 3838a189e431718cd1438d2dad5d7034d34bb93b
2023-08-23 07:15:29 -07:00
Lorenzo Blasa
17cfa0e571 Session Id moved to server config
Summary:
Session Id should be shared between client and server, but it was defined deep in the client (redux store).

The proposed solution presented below is to move the session id to the server configuration. By doing this, it becomes available to both server and client VERY early in the application life-cycle for both Electron and non-Electron builds.

Reviewed By: LukeDefeo

Differential Revision: D48520367

fbshipit-source-id: ca959b27ab18b1a2e4cd2fac1d28545664f1b514
2023-08-22 05:16:20 -07:00
Pascal Hartig
7dad33a626 Fix keytar types
Summary: The linter otherwise wants us to remove `awaits` which are in fact required.

Reviewed By: lblasa

Differential Revision: D48467534

fbshipit-source-id: 355aee4bc22098086600b85edf58c8ed077b8aaf
2023-08-21 04:00:56 -07:00
Lorenzo Blasa
3f37d29b95 Reintroduce timeout and is production check
Summary:
For dev, let's not kill the server.
Also, reintroduce a timeout of 60 seconds before disconnecting.

Reviewed By: antonk52

Differential Revision: D48432317

fbshipit-source-id: bac6f67101e5be481af06a5ea6ccb3b3134c4075
2023-08-17 13:46:08 -07:00
Lorenzo Blasa
ff6f98fc0d Import File implementation
Summary: Implementation was missing for the browser. This provides a default implementation.

Reviewed By: aigoncharov

Differential Revision: D48311198

fbshipit-source-id: fd067600f571234e0fbccfb90853b62f175ff8fb
2023-08-14 11:33:06 -07:00
Lorenzo Blasa
b5ed57b7d0 Remove UDS and thus the need for a proxy server
Summary: This change removes the UDS support and thus the need for having a proxy server.

Reviewed By: antonk52

Differential Revision: D48265244

fbshipit-source-id: c76bb4afba63959ddd17901b3887aa278b000beb
2023-08-11 08:19:51 -07:00
Lorenzo Blasa
7f3f1c0507 TCP is the only option so remove unused branches
Summary: As TCP is the only option, remove all branches.

Reviewed By: passy

Differential Revision: D48265093

fbshipit-source-id: 174527f05d8a841797fd95256e77fdeb9b2e6ad5
2023-08-11 08:19:51 -07:00
Lorenzo Blasa
bdc2d5f6eb If there are no connected clients, shutdown immediately
Summary: Instead of delaying the shutdown by a set timer, immediately shutdown.

Reviewed By: antonk52

Differential Revision: D48264571

fbshipit-source-id: 5e6556f2ecafb7cf9a19b3075e72f2be1abf9f95
2023-08-11 08:19:51 -07:00
Lorenzo Blasa
f93da44ee5 Remove idb device polling record
Summary:
If listing devices is successful, then don't record the event
as this is triggered every X amount of seconds.

Reviewed By: antonk52

Differential Revision: D47995681

fbshipit-source-id: 2d0fa68fd7b9c4ce74bad9e8cc0296691d9b8880
2023-08-11 08:19:51 -07:00
Andrey Goncharov
3b99e386a2 Fix comment
Reviewed By: LukeDefeo

Differential Revision: D48191671

fbshipit-source-id: 6978e831f48ffe4e8a8c6e71b819205cb3868966
2023-08-09 14:15:33 -07:00
Lorenzo Blasa
4e998ac083 Get OS by inspecting command
Summary: Commands can be idb or adb. If no ClientQuery is provided, set the OS accordingly.

Reviewed By: antonk52

Differential Revision: D47990745

fbshipit-source-id: 3e38b6ecb0a8ea21e584c1d6eff6feb53dd2cfab
2023-08-02 07:56:17 -07:00
Lorenzo Blasa
2c24ec9f5d Add OS to record
Summary: OS will become useful later on, add it.

Reviewed By: antonk52

Differential Revision: D47989161

fbshipit-source-id: 3615544051b163b77f87e5c52e6ac9cae8c478d4
2023-08-02 07:56:17 -07:00
Lorenzo Blasa
d43173a8df adb kill-server
Summary: Introduce a new command to allow killing adb

Reviewed By: antonk52

Differential Revision: D47988522

fbshipit-source-id: bb4f17faa7f9b31b9d42e45c0ce39b3f5d98f4b3
2023-08-02 07:56:17 -07:00
Luke De Feo
eaf5b4c246 Dont kill flipper server when no clients connect and is dev
Summary: This is quite annoying and causes may un needed reboots of flipper server while developing

Reviewed By: antonk52

Differential Revision: D47949842

fbshipit-source-id: c2f18e16a4933e4209e74f51978cb7d05b80ee11
2023-08-01 10:32:29 -07:00
Lorenzo Blasa
430a42ec7a Send connectivity logs to scuba
Summary:
^

A dashboard to display the logs from a user session will be built next.

Reviewed By: antonk52

Differential Revision: D47944634

fbshipit-source-id: fb9e53981de5abb401c93c47cdec68f72c944b94
2023-08-01 03:45:05 -07:00
Lorenzo Blasa
830ac6eac9 All logs to be emitted
Summary: Error logs were missing, they're now reported.

Reviewed By: antonk52

Differential Revision: D47944591

fbshipit-source-id: a1f5515dded7c2e8955522e12554cd5f520d4c88
2023-08-01 03:45:05 -07:00
Lorenzo Blasa
143fe0e719 Cmd failures should be displayed as errors too
Summary:
Styles are applied depending on entry type. This was an issue when we had 'cmd' as a type too.

So, let's simplify and keep type to denote info, warning, or errors.

Later on we can add a different tag if we want to differentiate between logs, command, others.

Reviewed By: passy

Differential Revision: D47912857

fbshipit-source-id: 213a0768a95f63cbd692ba96f6745ab740346a58
2023-07-31 05:16:54 -07:00
Lorenzo Blasa
f301de64f3 iOSDeviceManager queryDevicesForever converted to async
Summary: ^

Reviewed By: lawrencelomax

Differential Revision: D47912037

fbshipit-source-id: ac7a9650c82219a21577e6bca7e08d075ae5da15
2023-07-31 03:55:58 -07:00
Lorenzo Blasa
e9bae419a7 iOSDeviceManager getSimulators converted to async
Summary: ^

Reviewed By: lawrencelomax

Differential Revision: D47911997

fbshipit-source-id: df2cab1986d5ddc7f2bc4e857c76cd178f6a7ccb
2023-07-31 03:55:58 -07:00
Lorenzo Blasa
1f63a25027 idb kill
Summary: Introduce a new command to allow killing idb

Reviewed By: lawrencelomax

Differential Revision: D47911709

fbshipit-source-id: 970f1147a177bbcca0bdfa9e9ba970cdc8a914a3
2023-07-31 03:55:58 -07:00
Lorenzo Blasa
bf96cc2f15 Server notifications using connection troubleshoot notification
Summary: Migrate to new server event which allows troubleshoot

Reviewed By: passy

Differential Revision: D47875977

fbshipit-source-id: 2549bef6ebb26660176747d44e3f535ad9f1d213
2023-07-28 13:04:46 -07:00
Lorenzo Blasa
0ab1aeee78 ClientQuery optional for commands
Summary:
Some commands are run without a ClientQuery i.e. fetching devices.

Nevertheless, this can be provide insights when problems take place.

Reviewed By: antonk52

Differential Revision: D47795358

fbshipit-source-id: 0b7dc34475ae061f1b72843a087a798d305ed1c8
2023-07-26 08:16:47 -07:00
Andrey Goncharov
9ef69bdbad Downgrade metro connection error
Reviewed By: passy

Differential Revision: D47515502

fbshipit-source-id: aa05e9f62b661989187f0340cf06eaa7dbaac379
2023-07-17 08:38:50 -07:00
Sanjaiyan Parthipan
7cef8286f9 Concurrent Function Upgrade for Enhanced Performance (#4918)
Summary:
Republishing sanjaiyan-dev's PR https://github.com/facebook/flipper/pull/4889 running `git rebase` because of a conflict.

Pull Request resolved: https://github.com/facebook/flipper/pull/4918

Reviewed By: lblasa

Differential Revision: D47294545

Pulled By: passy

fbshipit-source-id: 74904ec6179ed5a3bab6f9b701c3cd769ecad3bf
2023-07-17 04:43:14 -07:00
Lorenzo Blasa
f404827c69 Exit if proxy fails
Summary:
If the proxy fails, exit.

The proxy server is the one listening on the supplied TCP port, used by PWA.

If it has failed, then quit the process.

Reviewed By: aigoncharov

Differential Revision: D47433631

fbshipit-source-id: 55750db5bf3e00876074a6b403747ec07718878c
2023-07-13 03:59:58 -07:00
Lorenzo Blasa
0e01fcad44 Android container utility integration
Summary: Report commands as executed by the android container utility.

Reviewed By: antonk52

Differential Revision: D47340410

fbshipit-source-id: dc2f80572816c8746e603aae2d721da2c47c3c4e
2023-07-12 03:30:34 -07:00
Lorenzo Blasa
6668420083 Disable stdout for successful device listing
Summary: If it is successful, we rarely care about stdout, which can be quite verbose. So don't use it.

Reviewed By: antonk52

Differential Revision: D47339446

fbshipit-source-id: 66f43d4184e44ed07364a6f33715139e19b2dc1d
2023-07-11 07:21:00 -07:00
Lorenzo Blasa
564d62d8d5 AndroidDevice, transform to async function
Summary: ^

Reviewed By: lawrencelomax

Differential Revision: D47331809

fbshipit-source-id: 819aefd1703cefc24b71216b946ca66bed3f5db1
2023-07-11 04:04:37 -07:00
Lorenzo Blasa
cc0f42be76 Integrate iOS and Android certificate providers with recorder
Summary: Integrate and clean existing logs.

Reviewed By: antonk52

Differential Revision: D47330592

fbshipit-source-id: 7b1c7ebbe5804ccc184edd2583f5cddd598f11e8
2023-07-10 05:52:07 -07:00
Lorenzo Blasa
c15ac08714 Clean AndroidCertificateProvider
Summary: Remove debug logs and add re-format other warn logs to have parity with iOS

Reviewed By: antonk52

Differential Revision: D47330455

fbshipit-source-id: ac8edde2124bbe99d0ea11f46f3b85dd77b96c7b
2023-07-10 05:52:07 -07:00
Lorenzo Blasa
e484867f21 Enable dispatch of events
Summary: To dispatch events, we need a valid instance of FlipperServer. This is the place so enable the recorder with it.

Reviewed By: antonk52

Differential Revision: D47295986

fbshipit-source-id: f2231544c58ba8f76e9102265e10a99520260b0a
2023-07-10 05:52:07 -07:00
Lorenzo Blasa
e20d723ac0 Make ClientQuery available to certificate provider
Summary:
CertificateProvider is intrinsically related to a client query, make it available to it.

This becomes the optional 'context' of shell executions. When these are recorded, the context is provider to the recorder which can then link an ongoing certificate exchange process with the success or failure of said command.

Reviewed By: antonk52

Differential Revision: D47295894

fbshipit-source-id: 9469d18bda02793d71a6a8b29c93f4af1db23569
2023-07-10 05:52:07 -07:00
Lorenzo Blasa
fc38355eee Centralise logging
Summary:
Centralise connectivity logging into a single place. By having all logs go through a single interface, then it becomes trivial to manipulate them as needed.

In this change, this is not done.

In subsequent diffs, logs will be dispatched via an event and will be visualised in the Connectivity Hub.

Reviewed By: passy

Differential Revision: D47185054

fbshipit-source-id: fb5eab98895be0c8f61fb9a77d3e66d6a8dbcb27
2023-07-10 04:14:14 -07:00
Lorenzo Blasa
f78ca5c09e iOSContainerUtility improvements (?)
Summary:
Bit of refactoring, bit of improvements, maybe. Mainly:

- Name consistency
- Promise chaining to async/await
- Refactoring

Reviewed By: lawrencelomax, antonk52

Differential Revision: D47224620

fbshipit-source-id: 5f4515f576decc03d470c11f24577b43f34a5a28
2023-07-05 05:15:01 -07:00
Lorenzo Blasa
e052c27f27 Remove ClientCsrQuery
Summary: Already have SecureClientQuery. No need to have this as a type as it's not used or needed anywhere.

Reviewed By: antonk52

Differential Revision: D47210345

fbshipit-source-id: d9f3026a0e2a0b5dd2e87f16dba34a388dacd75f
2023-07-04 09:01:26 -07:00
Lorenzo Blasa
4a0ad8c1c3 SecureClientQuery moved to flipper-common
Summary: It should've been there with ClientQuery.

Reviewed By: antonk52

Differential Revision: D47210314

fbshipit-source-id: 869496918648f20b616c1a612296fff55597af77
2023-07-04 09:01:26 -07:00
Lorenzo Blasa
f63e5d440a Move certificate exchange bits to app-connectivity
Summary: Bit of reorganising as utils is a bit too generic and crowded.

Reviewed By: passy

Differential Revision: D47186536

fbshipit-source-id: 7b1dd26db95aef00778ff4f23d91f7371c4d07ad
2023-07-04 02:19:58 -07:00