mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
fc61c74f23
Summary: When we change `CommitSyncConfig`, we want to not have to restart `scs` servers, and instead have them pick up the new config by using `LiveCommitSyncConfig`. This diff turned out larger than I expected, mainly due to the need to introduce various things around `TestLiveCommitSyncConfig`: - `TestLiveCommitSyncConfig`: the trait implementer to use in `mononoke_api::Repo` - `TestLiveCommitSyncConfigSource`: the helper struct to keep around for new values injection (very similar to how our `ConfigStore` has an inner `ConfigSource`, which can also be `TestSource`, but here injected values can be `CommitSyncConfig` instead of JSON). - all the places in integration tests, where `setup_configerator_configs` is now needed (I plan to start setting up configerator configs always in a separate diff, as it is cheap) Here are the explanations for a few things I think may be not immediately obvious: - I removed the `Clone` bound from `LiveCommitSyncConfig` trait, as `Clone` traits [cannot be made into trait objects](https://doc.rust-lang.org/book/ch17-02-trait-objects.html#object-safety-is-required-for-trait-objects) - `TestLiveCommitSyncConfigSource` vs `TestLiveCommitSyncConfigSourceInner` discrepancy is to ensure nobody should instantiate `TestLiveCommitSyncConfigSourceInner` outside of `live_commit_sync_config/src` - I am aware of the ugly discrepancy between the main `--mononoke-config-path`, which is used to load initial configuration and can be both a file-based and a configerator-based config; and `--local-configerator-path`, used to override config sources for `Tunables` and `LiveCommitSyncConfig`. Ideally these two should just be unified somehow, but that is a little out of scope of this diff (I've already added it to the dirt doc though). - in `mononoke_api::Repo` there are methods `new_test_xrepo` and `new_test_common`, which changed from maybe accepting just a `CommitSyncConfig` to now maybe accepting both `CommitSyncConfig` and `LiveCommitSyncConfig`. It can be made a bit cleaner: I can just query `CommitSyncConfig` from `LiveCommitSyncConfig` in `new_test_common` and avoid having two args. I was too lazy to do this, lmk if you feel strongly about it. Reviewed By: StanislavGlebik Differential Revision: D22443623 fbshipit-source-id: 0d6bbda2223e77b89cc59863b703db5081bcd601
32 lines
985 B
Perl
32 lines
985 B
Perl
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License found in the LICENSE file in the root
|
|
# directory of this source tree.
|
|
|
|
$ . "${TEST_FIXTURES}/library.sh"
|
|
$ . "${TEST_FIXTURES}/library-push-redirector.sh"
|
|
|
|
Setup config repo:
|
|
$ cd "$TESTTMP"
|
|
$ setup_configerator_configs
|
|
$ create_large_small_repo
|
|
Setting up hg server repos
|
|
Blobimporting them
|
|
Adding synced mapping entry
|
|
|
|
start SCS server
|
|
$ start_and_wait_for_scs_server
|
|
|
|
make some simple requests that we can use to check scuba logging
|
|
|
|
List repos - there should be two of them
|
|
$ scsc repos
|
|
large-mon
|
|
small-mon
|
|
|
|
$ scsc xrepo-lookup --source-repo small-mon --target-repo large-mon --bonsai-id $SMALL_MASTER_BONSAI
|
|
bfcfb674663c5438027bcde4a7ae5024c838f76a
|
|
$ scsc xrepo-lookup --source-repo large-mon --target-repo small-mon --bonsai-id $LARGE_MASTER_BONSAI
|
|
11f848659bfcf77abd04f947883badd8efa88d26
|