Show More
@@ -1900,6 +1900,44 b' def perfstartup(ui, repo, **opts):' | |||||
1900 | fm.end() |
|
1900 | fm.end() | |
1901 |
|
1901 | |||
1902 |
|
1902 | |||
|
1903 | def _find_stream_generator(version): | |||
|
1904 | """find the proper generator function for this stream version""" | |||
|
1905 | import mercurial.streamclone | |||
|
1906 | ||||
|
1907 | available = {} | |||
|
1908 | ||||
|
1909 | # try to fetch a v1 generator | |||
|
1910 | generatev1 = getattr(mercurial.streamclone, "generatev1", None) | |||
|
1911 | if generatev1 is not None: | |||
|
1912 | ||||
|
1913 | def generate(repo): | |||
|
1914 | entries, bytes, data = generatev2(repo, None, None, True) | |||
|
1915 | return data | |||
|
1916 | ||||
|
1917 | available[b'v1'] = generatev1 | |||
|
1918 | # try to fetch a v2 generator | |||
|
1919 | generatev2 = getattr(mercurial.streamclone, "generatev2", None) | |||
|
1920 | if generatev2 is not None: | |||
|
1921 | ||||
|
1922 | def generate(repo): | |||
|
1923 | entries, bytes, data = generatev2(repo, None, None, True) | |||
|
1924 | return data | |||
|
1925 | ||||
|
1926 | available[b'v2'] = generate | |||
|
1927 | # resolve the request | |||
|
1928 | if version == b"latest": | |||
|
1929 | latest_key = max(available) | |||
|
1930 | return available[latest_key] | |||
|
1931 | elif version in available: | |||
|
1932 | return available[version] | |||
|
1933 | else: | |||
|
1934 | msg = b"unkown or unavailable version: %s" | |||
|
1935 | msg %= version | |||
|
1936 | hint = b"available versions: %s" | |||
|
1937 | hint %= b', '.join(sorted(available)) | |||
|
1938 | raise error.Abort(msg, hint=hint) | |||
|
1939 | ||||
|
1940 | ||||
1903 | @command( |
|
1941 | @command( | |
1904 | b'perf::stream-locked-section', |
|
1942 | b'perf::stream-locked-section', | |
1905 | [ |
|
1943 | [ | |
@@ -1914,10 +1952,6 b' def perfstartup(ui, repo, **opts):' | |||||
1914 | ) |
|
1952 | ) | |
1915 | def perf_stream_clone_scan(ui, repo, stream_version, **opts): |
|
1953 | def perf_stream_clone_scan(ui, repo, stream_version, **opts): | |
1916 | """benchmark the initial, repo-locked, section of a stream-clone""" |
|
1954 | """benchmark the initial, repo-locked, section of a stream-clone""" | |
1917 | import mercurial.streamclone |
|
|||
1918 |
|
||||
1919 | generatev1 = mercurial.streamclone.generatev1 |
|
|||
1920 | generatev2 = mercurial.streamclone.generatev2 |
|
|||
1921 |
|
1955 | |||
1922 | opts = _byteskwargs(opts) |
|
1956 | opts = _byteskwargs(opts) | |
1923 | timer, fm = gettimer(ui, opts) |
|
1957 | timer, fm = gettimer(ui, opts) | |
@@ -1929,23 +1963,11 b' def perf_stream_clone_scan(ui, repo, str' | |||||
1929 | def setupone(): |
|
1963 | def setupone(): | |
1930 | result_holder[0] = None |
|
1964 | result_holder[0] = None | |
1931 |
|
1965 | |||
1932 | def runone_v1(): |
|
1966 | generate = _find_stream_generator(stream_version) | |
1933 | # the lock is held for the duration the initialisation |
|
1967 | ||
1934 | result_holder[0] = generatev1(repo) |
|
1968 | def runone(): | |
1935 |
|
||||
1936 | def runone_v2(): |
|
|||
1937 | # the lock is held for the duration the initialisation |
|
1969 | # the lock is held for the duration the initialisation | |
1938 |
result_holder[0] = generate |
|
1970 | result_holder[0] = generate(repo) | |
1939 |
|
||||
1940 | if stream_version == b'latest': |
|
|||
1941 | runone = runone_v2 |
|
|||
1942 | elif stream_version == b'v2': |
|
|||
1943 | runone = runone_v2 |
|
|||
1944 | elif stream_version == b'v1': |
|
|||
1945 | runone = runone_v1 |
|
|||
1946 | else: |
|
|||
1947 | msg = b'unknown stream version: "%s"' % stream_version |
|
|||
1948 | raise error.Abort(msg) |
|
|||
1949 |
|
1971 | |||
1950 | timer(runone, setup=setupone, title=b"load") |
|
1972 | timer(runone, setup=setupone, title=b"load") | |
1951 | fm.end() |
|
1973 | fm.end() |
General Comments 0
You need to be logged in to leave comments.
Login now