Files
wehub-resource-sync 5357c39144
Fuzzer / Run Fuzzer (push) Has been cancelled
Race tests / Go race tests (ubuntu-22.04) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:01:40 +08:00

113 lines
3.5 KiB
YAML

parallel: true
tests:
- name: can clone from server1 remotesapi endpoint
multi_repos:
- name: server1
repos:
- name: repo1
- name: repo2
server:
args: ["--remotesapi-port", "{{get_port \"remotesapi_port\"}}", "--port", "{{get_port \"server_port\"}}"]
dynamic_port: server_port
- name: server2
repos:
- name: repo1
with_files:
- name: server.yaml
contents: |
log_level: trace
listener:
host: 0.0.0.0
port: {{get_port "server2_port"}}
server:
args: ["--config", "server.yaml"]
dynamic_port: server2_port
connections:
- on: server1
queries:
- exec: "use repo2"
- exec: "create table vals (id int primary key)"
- exec: "insert into vals values (0),(1),(2),(3),(4)"
- exec: "call dolt_commit('-Am', 'insert some data')"
- on: server2
queries:
- exec: "use repo1"
- exec: "call dolt_clone('http://localhost:{{get_port \"remotesapi_port\"}}/repo2')"
- exec: "use repo2"
- query: "select count(*) from vals"
result:
columns: ["count(*)"]
rows: [["5"]]
- name: can clone from own remotesapi endpoint without deadlocking
# Regression test: CloneDatabaseFromRemote must not hold the provider lock
# across the network fetch. The fetch below reads from this same server's
# remotesapi, whose handler needs a read lock on the provider; holding the
# write lock across the fetch deadlocks the clone against itself.
multi_repos:
- name: server1
repos:
- name: repo1
- name: repo2
server:
args: ["--remotesapi-port", "{{get_port \"remotesapi_port\"}}", "--port", "{{get_port \"server_port\"}}"]
dynamic_port: server_port
connections:
- on: server1
queries:
- exec: "use repo2"
- exec: "create table vals (id int primary key)"
- exec: "insert into vals values (0),(1),(2),(3),(4)"
- exec: "call dolt_commit('-Am', 'insert some data')"
- on: server1
queries:
- exec: "call dolt_clone('http://localhost:{{get_port \"remotesapi_port\"}}/repo2', 'repo2_clone')"
- exec: "use repo2_clone"
- query: "select count(*) from vals"
result:
columns: ["count(*)"]
rows: [["5"]]
- name: can clone from server1 remotesapi endpoint after a gc
multi_repos:
- name: server1
repos:
- name: repo1
- name: repo2
server:
args: ["--remotesapi-port", "{{get_port \"remotesapi_port\"}}", "--port", "{{get_port \"server_port\"}}"]
dynamic_port: server_port
- name: server2
repos:
- name: repo1
with_files:
- name: server.yaml
contents: |
log_level: trace
listener:
host: 0.0.0.0
port: {{get_port "server2_port"}}
server:
args: ["--config", "server.yaml"]
dynamic_port: server2_port
connections:
- on: server1
queries:
- exec: "use repo2"
- exec: "create table vals (id int primary key)"
- exec: "insert into vals values (0),(1),(2),(3),(4)"
- exec: "call dolt_commit('-Am', 'insert some data')"
- exec: "call dolt_gc()"
- on: server1
queries:
- exec: "use repo2"
- exec: "insert into vals values (5),(6),(7),(8),(9)"
- exec: "call dolt_commit('-Am', 'insert some more data')"
- on: server2
queries:
- exec: "use repo1"
- exec: "call dolt_clone('http://localhost:{{get_port \"remotesapi_port\"}}/repo2')"
- exec: "use repo2"
- query: "select count(*) from vals"
result:
columns: ["count(*)"]
rows: [["10"]]