##// END OF EJS Templates
perf: add a function to find a stream version generator...
marmoute -
r51567:b10c786b default
parent child Browse files
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] = generatev2(repo, None, None, True)
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