Moving to new performance logging

merge-requests/30/head
Bob Mottram 2021-10-19 14:41:48 +01:00
parent a7137b5983
commit 7605f59844
2 changed files with 185 additions and 165 deletions

311
daemon.py
View File

@ -346,6 +346,7 @@ from context import hasValidContext
from context import getIndividualPostContext from context import getIndividualPostContext
from speaker import getSSMLbox from speaker import getSSMLbox
from city import getSpoofedCity from city import getSpoofedCity
from fitnessFunctions import fitnessPerformance
import os import os
@ -3192,7 +3193,7 @@ class PubServer(BaseHTTPRequestHandler):
self._showPersonOptions(callingDomain, profilePathStr, self._showPersonOptions(callingDomain, profilePathStr,
baseDir, httpPrefix, baseDir, httpPrefix,
domain, domainFull, domain, domainFull,
GETstartTime, GETtimings, GETstartTime,
onionDomain, i2pDomain, onionDomain, i2pDomain,
cookie, debug, authorized) cookie, debug, authorized)
return return
@ -5836,8 +5837,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.POSTbusy = False self.server.POSTbusy = False
def _progressiveWebAppManifest(self, callingDomain: str, def _progressiveWebAppManifest(self, callingDomain: str,
GETstartTime, GETstartTime) -> None:
GETtimings: {}) -> None:
"""gets the PWA manifest """gets the PWA manifest
""" """
app1 = "https://f-droid.org/en/packages/eu.siacs.conversations" app1 = "https://f-droid.org/en/packages/eu.siacs.conversations"
@ -5929,9 +5929,9 @@ class PubServer(BaseHTTPRequestHandler):
self._write(msg) self._write(msg)
if self.server.debug: if self.server.debug:
print('Sent manifest: ' + callingDomain) print('Sent manifest: ' + callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'show logout', 'send manifest', '_progressiveWebAppManifest', 'send manifest',
self.server.debug) self.server.debug)
def _getFavicon(self, callingDomain: str, def _getFavicon(self, callingDomain: str,
baseDir: str, debug: bool, baseDir: str, debug: bool,
@ -6040,7 +6040,7 @@ class PubServer(BaseHTTPRequestHandler):
def _getFonts(self, callingDomain: str, path: str, def _getFonts(self, callingDomain: str, path: str,
baseDir: str, debug: bool, baseDir: str, debug: bool,
GETstartTime, GETtimings: {}) -> None: GETstartTime) -> None:
"""Returns a font """Returns a font
""" """
fontStr = path.split('/fonts/')[1] fontStr = path.split('/fonts/')[1]
@ -6072,10 +6072,9 @@ class PubServer(BaseHTTPRequestHandler):
if debug: if debug:
print('font sent from cache: ' + print('font sent from cache: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'hasAccept', '_getFonts', 'send font from cache',
'send font from cache', self.server.debug)
self.server.debug)
return return
else: else:
if os.path.isfile(fontFilename): if os.path.isfile(fontFilename):
@ -6091,10 +6090,9 @@ class PubServer(BaseHTTPRequestHandler):
if debug: if debug:
print('font sent from file: ' + print('font sent from file: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'hasAccept', '_getFonts', 'send font from file',
'send font from file', self.server.debug)
self.server.debug)
return return
if debug: if debug:
print('font not found: ' + path + ' ' + callingDomain) print('font not found: ' + path + ' ' + callingDomain)
@ -6104,7 +6102,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain: str, path: str, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, port: int, proxyType: str, domain: str, port: int, proxyType: str,
GETstartTime, GETtimings: {}, GETstartTime,
debug: bool) -> None: debug: bool) -> None:
"""Returns an RSS2 feed for the blog """Returns an RSS2 feed for the blog
""" """
@ -6145,10 +6143,9 @@ class PubServer(BaseHTTPRequestHandler):
if debug: if debug:
print('Sent rss2 feed: ' + print('Sent rss2 feed: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'sharedInbox enabled', '_getRSS2feed', 'blog rss2',
'blog rss2', debug)
self.server.debug)
return return
if debug: if debug:
print('Failed to get rss2 feed: ' + print('Failed to get rss2 feed: ' +
@ -6160,7 +6157,7 @@ class PubServer(BaseHTTPRequestHandler):
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domainFull: str, port: int, proxyType: str, domainFull: str, port: int, proxyType: str,
translate: {}, translate: {},
GETstartTime, GETtimings: {}, GETstartTime,
debug: bool) -> None: debug: bool) -> None:
"""Returns an RSS2 feed for all blogs on this instance """Returns an RSS2 feed for all blogs on this instance
""" """
@ -6207,10 +6204,9 @@ class PubServer(BaseHTTPRequestHandler):
if debug: if debug:
print('Sent rss2 feed: ' + print('Sent rss2 feed: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'sharedInbox enabled', '_getRSS2site', 'blog rss2',
'blog rss2', debug)
self.server.debug)
return return
if debug: if debug:
print('Failed to get rss2 feed: ' + print('Failed to get rss2 feed: ' +
@ -6221,7 +6217,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain: str, path: str, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, port: int, proxyType: str, domain: str, port: int, proxyType: str,
GETstartTime, GETtimings: {}, GETstartTime,
debug: bool) -> None: debug: bool) -> None:
"""Returns the newswire feed """Returns the newswire feed
""" """
@ -6248,6 +6244,9 @@ class PubServer(BaseHTTPRequestHandler):
if debug: if debug:
print('Sent rss2 newswire feed: ' + print('Sent rss2 newswire feed: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
fitnessPerformance(GETstartTime, self.server.fitness,
'_getNewswireFeed', 'newswire rss2',
debug)
return return
if debug: if debug:
print('Failed to get rss2 newswire feed: ' + print('Failed to get rss2 newswire feed: ' +
@ -6258,7 +6257,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain: str, path: str, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, port: int, proxyType: str, domain: str, port: int, proxyType: str,
GETstartTime, GETtimings: {}, GETstartTime,
debug: bool) -> None: debug: bool) -> None:
"""Returns the hashtag categories feed """Returns the hashtag categories feed
""" """
@ -6284,6 +6283,9 @@ class PubServer(BaseHTTPRequestHandler):
if debug: if debug:
print('Sent rss2 categories feed: ' + print('Sent rss2 categories feed: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
fitnessPerformance(GETstartTime, self.server.fitness,
'_getHashtagCategoriesFeed',
'categories rss2', debug)
return return
if debug: if debug:
print('Failed to get rss2 categories feed: ' + print('Failed to get rss2 categories feed: ' +
@ -6294,7 +6296,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain: str, path: str, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, port: int, proxyType: str, domain: str, port: int, proxyType: str,
GETstartTime, GETtimings: {}, GETstartTime,
debug: bool, systemLanguage: str) -> None: debug: bool, systemLanguage: str) -> None:
"""Returns an RSS3 feed """Returns an RSS3 feed
""" """
@ -6330,10 +6332,9 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug: if self.server.debug:
print('Sent rss3 feed: ' + print('Sent rss3 feed: ' +
path + ' ' + callingDomain) path + ' ' + callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'sharedInbox enabled', '_getRSS3feed',
'blog rss3', 'blog rss3', debug)
self.server.debug)
return return
if debug: if debug:
print('Failed to get rss3 feed: ' + print('Failed to get rss3 feed: ' +
@ -6343,7 +6344,7 @@ class PubServer(BaseHTTPRequestHandler):
def _showPersonOptions(self, callingDomain: str, path: str, def _showPersonOptions(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, domain: str, domainFull: str,
GETstartTime, GETtimings: {}, GETstartTime,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
cookie: str, debug: bool, cookie: str, debug: bool,
authorized: bool) -> None: authorized: bool) -> None:
@ -6459,10 +6460,9 @@ class PubServer(BaseHTTPRequestHandler):
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
cookie, callingDomain, False) cookie, callingDomain, False)
self._write(msg) self._write(msg)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'registered devices done', '_showPersonOptions',
'person options', 'person options', debug)
self.server.debug)
return return
if '/users/news/' in path: if '/users/news/' in path:
@ -6484,7 +6484,7 @@ class PubServer(BaseHTTPRequestHandler):
def _showMedia(self, callingDomain: str, def _showMedia(self, callingDomain: str,
path: str, baseDir: str, path: str, baseDir: str,
GETstartTime, GETtimings: {}) -> None: GETstartTime) -> None:
"""Returns a media file """Returns a media file
""" """
if isImageFile(path) or \ if isImageFile(path) or \
@ -6512,16 +6512,15 @@ class PubServer(BaseHTTPRequestHandler):
None, True, None, True,
lastModifiedTimeStr) lastModifiedTimeStr)
self._write(mediaBinary) self._write(mediaBinary)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'show emoji done', '_showMedia',
'show media', 'show media', self.server.debug)
self.server.debug)
return return
self._404() self._404()
def _getOntology(self, callingDomain: str, def _getOntology(self, callingDomain: str,
path: str, baseDir: str, path: str, baseDir: str,
GETstartTime, GETtimings: {}) -> None: GETstartTime) -> None:
"""Returns an ontology file """Returns an ontology file
""" """
if '.owl' in path or '.rdf' in path or '.json' in path: if '.owl' in path or '.rdf' in path or '.json' in path:
@ -6558,16 +6557,14 @@ class PubServer(BaseHTTPRequestHandler):
self._set_headers(ontologyFileType, msglen, self._set_headers(ontologyFileType, msglen,
None, callingDomain, False) None, callingDomain, False)
self._write(msg) self._write(msg)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'show emoji done', '_getOntology',
'get onotology', 'get ontology', self.server.debug)
self.server.debug)
return return
self._404() self._404()
def _showEmoji(self, callingDomain: str, path: str, def _showEmoji(self, callingDomain: str, path: str,
baseDir: str, baseDir: str, GETstartTime) -> None:
GETstartTime, GETtimings: {}) -> None:
"""Returns an emoji image """Returns an emoji image
""" """
if isImageFile(path): if isImageFile(path):
@ -6588,16 +6585,14 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domainFull, self.server.domainFull,
False, None) False, None)
self._write(mediaBinary) self._write(mediaBinary)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'background shown done', '_showEmoji',
'show emoji', 'show emoji', self.server.debug)
self.server.debug)
return return
self._404() self._404()
def _showIcon(self, callingDomain: str, path: str, def _showIcon(self, callingDomain: str, path: str,
baseDir: str, baseDir: str, GETstartTime) -> None:
GETstartTime, GETtimings: {}) -> None:
"""Shows an icon """Shows an icon
""" """
if path.endswith('.png'): if path.endswith('.png'):
@ -6626,6 +6621,9 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domainFull, self.server.domainFull,
False, None) False, None)
self._write(mediaBinary) self._write(mediaBinary)
fitnessPerformance(GETstartTime, self.server.fitness,
'_showIcon',
'icon shown cache', self.server.debug)
return return
else: else:
if os.path.isfile(mediaFilename): if os.path.isfile(mediaFilename):
@ -6639,16 +6637,14 @@ class PubServer(BaseHTTPRequestHandler):
False, None) False, None)
self._write(mediaBinary) self._write(mediaBinary)
self.server.iconsCache[mediaStr] = mediaBinary self.server.iconsCache[mediaStr] = mediaBinary
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'show files done', '_showIcon',
'icon shown', 'icon shown file', self.server.debug)
self.server.debug)
return return
self._404() self._404()
def _showHelpScreenImage(self, callingDomain: str, path: str, def _showHelpScreenImage(self, callingDomain: str, path: str,
baseDir: str, baseDir: str, GETstartTime) -> None:
GETstartTime, GETtimings: {}) -> None:
"""Shows a help screen image """Shows a help screen image
""" """
if not isImageFile(path): if not isImageFile(path):
@ -6683,16 +6679,14 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domainFull, self.server.domainFull,
False, None) False, None)
self._write(mediaBinary) self._write(mediaBinary)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'show files done', '_showHelpScreenImage',
'help image shown', 'help image shown', self.server.debug)
self.server.debug)
return return
self._404() self._404()
def _showCachedAvatar(self, refererDomain: str, path: str, def _showCachedAvatar(self, refererDomain: str, path: str,
baseDir: str, baseDir: str, GETstartTime) -> None:
GETstartTime, GETtimings: {}) -> None:
"""Shows an avatar image obtained from the cache """Shows an avatar image obtained from the cache
""" """
mediaFilename = baseDir + '/cache' + path mediaFilename = baseDir + '/cache' + path
@ -6710,10 +6704,9 @@ class PubServer(BaseHTTPRequestHandler):
refererDomain, refererDomain,
False, None) False, None)
self._write(mediaBinary) self._write(mediaBinary)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'icon shown done', '_showCachedAvatar',
'avatar shown', 'avatar shown', self.server.debug)
self.server.debug)
return return
self._404() self._404()
@ -6722,7 +6715,7 @@ class PubServer(BaseHTTPRequestHandler):
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}) -> None: GETstartTime) -> None:
"""Return the result of a hashtag search """Return the result of a hashtag search
""" """
pageNumber = 1 pageNumber = 1
@ -6792,17 +6785,16 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(originPathStrAbsolute + '/search', self._redirect_headers(originPathStrAbsolute + '/search',
cookie, callingDomain) cookie, callingDomain)
self.server.GETbusy = False self.server.GETbusy = False
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'login shown done', '_hashtagSearch',
'hashtag search', 'hashtag search', self.server.debug)
self.server.debug)
def _hashtagSearchRSS2(self, callingDomain: str, def _hashtagSearchRSS2(self, callingDomain: str,
path: str, cookie: str, path: str, cookie: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}) -> None: GETstartTime) -> None:
"""Return an RSS 2 feed for a hashtag """Return an RSS 2 feed for a hashtag
""" """
hashtag = path.split('/tags/rss2/')[1] hashtag = path.split('/tags/rss2/')[1]
@ -6850,10 +6842,9 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(originPathStrAbsolute + '/search', self._redirect_headers(originPathStrAbsolute + '/search',
cookie, callingDomain) cookie, callingDomain)
self.server.GETbusy = False self.server.GETbusy = False
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'login shown done', '_hashtagSearchRSS2',
'hashtag rss feed', 'hashtag rss feed', self.server.debug)
self.server.debug)
def _announceButton(self, callingDomain: str, path: str, def _announceButton(self, callingDomain: str, path: str,
baseDir: str, baseDir: str,
@ -6861,7 +6852,7 @@ class PubServer(BaseHTTPRequestHandler):
httpPrefix: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
repeatPrivate: bool, repeatPrivate: bool,
debug: bool) -> None: debug: bool) -> None:
"""The announce/repeat button was pressed on a post """The announce/repeat button was pressed on a post
@ -7000,10 +6991,9 @@ class PubServer(BaseHTTPRequestHandler):
actorAbsolute + '/' + timelineStr + '?page=' + \ actorAbsolute + '/' + timelineStr + '?page=' + \
str(pageNumber) + timelineBookmark str(pageNumber) + timelineBookmark
self._redirect_headers(actorPathStr, cookie, callingDomain) self._redirect_headers(actorPathStr, cookie, callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'emoji search shown done', '_announceButton',
'show announce', 'show announce', self.server.debug)
self.server.debug)
def _undoAnnounceButton(self, callingDomain: str, path: str, def _undoAnnounceButton(self, callingDomain: str, path: str,
baseDir: str, baseDir: str,
@ -7011,7 +7001,7 @@ class PubServer(BaseHTTPRequestHandler):
httpPrefix: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
repeatPrivate: bool, debug: bool, repeatPrivate: bool, debug: bool,
recentPostsCache: {}): recentPostsCache: {}):
"""Undo announce/repeat button was pressed """Undo announce/repeat button was pressed
@ -7108,17 +7098,16 @@ class PubServer(BaseHTTPRequestHandler):
actorAbsolute + '/' + timelineStr + '?page=' + \ actorAbsolute + '/' + timelineStr + '?page=' + \
str(pageNumber) + timelineBookmark str(pageNumber) + timelineBookmark
self._redirect_headers(actorPathStr, cookie, callingDomain) self._redirect_headers(actorPathStr, cookie, callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'show announce done', '_undoAnnounceButton',
'unannounce', 'unannounce', self.server.debug)
self.server.debug)
def _followApproveButton(self, callingDomain: str, path: str, def _followApproveButton(self, callingDomain: str, path: str,
cookie: str, cookie: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, debug: bool): proxyType: str, debug: bool):
"""Follow approve button was pressed """Follow approve button was pressed
""" """
@ -7163,10 +7152,9 @@ class PubServer(BaseHTTPRequestHandler):
'http://' + i2pDomain + originPathStr 'http://' + i2pDomain + originPathStr
self._redirect_headers(originPathStrAbsolute, self._redirect_headers(originPathStrAbsolute,
cookie, callingDomain) cookie, callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'unannounce done', '_followApproveButton',
'follow approve shown', 'follow approve shown', self.server.debug)
self.server.debug)
self.server.GETbusy = False self.server.GETbusy = False
def _newswireVote(self, callingDomain: str, path: str, def _newswireVote(self, callingDomain: str, path: str,
@ -7174,7 +7162,7 @@ class PubServer(BaseHTTPRequestHandler):
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, debug: bool, proxyType: str, debug: bool,
newswire: {}): newswire: {}):
"""Vote for a newswire item """Vote for a newswire item
@ -7221,10 +7209,9 @@ class PubServer(BaseHTTPRequestHandler):
'http://' + i2pDomain + originPathStr 'http://' + i2pDomain + originPathStr
self._redirect_headers(originPathStrAbsolute, self._redirect_headers(originPathStrAbsolute,
cookie, callingDomain) cookie, callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'unannounce done', '_newswireVote',
'vote for newswite item', 'vote for newswite item', self.server.debug)
self.server.debug)
self.server.GETbusy = False self.server.GETbusy = False
def _newswireUnvote(self, callingDomain: str, path: str, def _newswireUnvote(self, callingDomain: str, path: str,
@ -7232,7 +7219,7 @@ class PubServer(BaseHTTPRequestHandler):
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, debug: bool, proxyType: str, debug: bool,
newswire: {}): newswire: {}):
"""Remove vote for a newswire item """Remove vote for a newswire item
@ -7277,10 +7264,9 @@ class PubServer(BaseHTTPRequestHandler):
'http://' + i2pDomain + originPathStr 'http://' + i2pDomain + originPathStr
self._redirect_headers(originPathStrAbsolute, self._redirect_headers(originPathStrAbsolute,
cookie, callingDomain) cookie, callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'unannounce done', '_newswireUnvote',
'unvote for newswite item', 'unvote for newswite item', self.server.debug)
self.server.debug)
self.server.GETbusy = False self.server.GETbusy = False
def _followDenyButton(self, callingDomain: str, path: str, def _followDenyButton(self, callingDomain: str, path: str,
@ -7288,7 +7274,7 @@ class PubServer(BaseHTTPRequestHandler):
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, debug: bool): proxyType: str, debug: bool):
"""Follow deny button was pressed """Follow deny button was pressed
""" """
@ -7325,16 +7311,15 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(originPathStrAbsolute, self._redirect_headers(originPathStrAbsolute,
cookie, callingDomain) cookie, callingDomain)
self.server.GETbusy = False self.server.GETbusy = False
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'follow approve done', '_followDenyButton',
'follow deny shown', 'follow deny shown', self.server.debug)
self.server.debug)
def _likeButton(self, callingDomain: str, path: str, def _likeButton(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, domain: str, domainFull: str,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str):
"""Press the like button """Press the like button
@ -7492,16 +7477,15 @@ class PubServer(BaseHTTPRequestHandler):
'?page=' + str(pageNumber) + timelineBookmark '?page=' + str(pageNumber) + timelineBookmark
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'follow deny done', '_likeButton',
'like shown', 'like shown', self.server.debug)
self.server.debug)
def _undoLikeButton(self, callingDomain: str, path: str, def _undoLikeButton(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, domain: str, domainFull: str,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str):
"""A button is pressed to undo """A button is pressed to undo
@ -7649,16 +7633,15 @@ class PubServer(BaseHTTPRequestHandler):
'?page=' + str(pageNumber) + timelineBookmark '?page=' + str(pageNumber) + timelineBookmark
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'like shown done', '_undoLikeButton',
'unlike shown', 'unlike shown', self.server.debug)
self.server.debug)
def _bookmarkButton(self, callingDomain: str, path: str, def _bookmarkButton(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str):
"""Bookmark button was pressed """Bookmark button was pressed
@ -7783,16 +7766,15 @@ class PubServer(BaseHTTPRequestHandler):
'?page=' + str(pageNumber) + timelineBookmark '?page=' + str(pageNumber) + timelineBookmark
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'unlike shown done', '_bookmarkButton',
'bookmark shown', 'bookmark shown', self.server.debug)
self.server.debug)
def _undoBookmarkButton(self, callingDomain: str, path: str, def _undoBookmarkButton(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str):
"""Button pressed to undo a bookmark """Button pressed to undo a bookmark
@ -7917,16 +7899,15 @@ class PubServer(BaseHTTPRequestHandler):
'?page=' + str(pageNumber) + timelineBookmark '?page=' + str(pageNumber) + timelineBookmark
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'bookmark shown done', '_undoBookmarkButton',
'unbookmark shown', 'unbookmark shown', self.server.debug)
self.server.debug)
def _deleteButton(self, callingDomain: str, path: str, def _deleteButton(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETtimings: {}, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str):
"""Delete button is pressed on a post """Delete button is pressed on a post
@ -8025,10 +8006,9 @@ class PubServer(BaseHTTPRequestHandler):
actor = 'http://' + i2pDomain + usersPath actor = 'http://' + i2pDomain + usersPath
self._redirect_headers(actor + '/' + timelineStr, self._redirect_headers(actor + '/' + timelineStr,
cookie, callingDomain) cookie, callingDomain)
self._benchmarkGETtimings(GETstartTime, GETtimings, fitnessPerformance(GETstartTime, self.server.fitness,
'unbookmark shown done', '_deleteButton',
'delete shown', 'delete shown', self.server.debug)
self.server.debug)
def _muteButton(self, callingDomain: str, path: str, def _muteButton(self, callingDomain: str, path: str,
baseDir: str, httpPrefix: str, baseDir: str, httpPrefix: str,
@ -12088,7 +12068,7 @@ class PubServer(BaseHTTPRequestHandler):
if self._hasAccept(callingDomain): if self._hasAccept(callingDomain):
if not self._requestHTTP(): if not self._requestHTTP():
self._progressiveWebAppManifest(callingDomain, self._progressiveWebAppManifest(callingDomain,
GETstartTime, GETtimings) GETstartTime)
return return
else: else:
self.path = '/' self.path = '/'
@ -12385,7 +12365,7 @@ class PubServer(BaseHTTPRequestHandler):
if '/fonts/' in self.path: if '/fonts/' in self.path:
self._getFonts(callingDomain, self.path, self._getFonts(callingDomain, self.path,
self.server.baseDir, self.server.debug, self.server.baseDir, self.server.debug,
GETstartTime, GETtimings) GETstartTime)
return return
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
@ -12415,7 +12395,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domain, self.server.domain,
self.server.port, self.server.port,
self.server.proxyType, self.server.proxyType,
GETstartTime, GETtimings, GETstartTime,
self.server.debug) self.server.debug)
return return
@ -12427,7 +12407,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domain, self.server.domain,
self.server.port, self.server.port,
self.server.proxyType, self.server.proxyType,
GETstartTime, GETtimings, GETstartTime,
self.server.debug) self.server.debug)
return return
@ -12442,7 +12422,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domain, self.server.domain,
self.server.port, self.server.port,
self.server.proxyType, self.server.proxyType,
GETstartTime, GETtimings, GETstartTime,
self.server.debug) self.server.debug)
else: else:
self._getRSS2site(authorized, self._getRSS2site(authorized,
@ -12453,7 +12433,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.proxyType, self.server.proxyType,
self.server.translate, self.server.translate,
GETstartTime, GETtimings, GETstartTime,
self.server.debug) self.server.debug)
return return
@ -12471,7 +12451,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domain, self.server.domain,
self.server.port, self.server.port,
self.server.proxyType, self.server.proxyType,
GETstartTime, GETtimings, GETstartTime,
self.server.debug, self.server.debug,
self.server.systemLanguage) self.server.systemLanguage)
return return
@ -12713,7 +12693,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.httpPrefix, self.server.httpPrefix,
self.server.domain, self.server.domain,
self.server.domainFull, self.server.domainFull,
GETstartTime, GETtimings, GETstartTime,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
cookie, self.server.debug, cookie, self.server.debug,
@ -13363,7 +13343,7 @@ class PubServer(BaseHTTPRequestHandler):
if '/emoji/' in self.path: if '/emoji/' in self.path:
self._showEmoji(callingDomain, self.path, self._showEmoji(callingDomain, self.path,
self.server.baseDir, self.server.baseDir,
GETstartTime, GETtimings) GETstartTime)
return return
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
@ -13380,7 +13360,7 @@ class PubServer(BaseHTTPRequestHandler):
if '/media/' in self.path: if '/media/' in self.path:
self._showMedia(callingDomain, self._showMedia(callingDomain,
self.path, self.server.baseDir, self.path, self.server.baseDir,
GETstartTime, GETtimings) GETstartTime)
return return
if '/ontologies/' in self.path or \ if '/ontologies/' in self.path or \
@ -13388,7 +13368,7 @@ class PubServer(BaseHTTPRequestHandler):
if not hasUsersPath(self.path): if not hasUsersPath(self.path):
self._getOntology(callingDomain, self._getOntology(callingDomain,
self.path, self.server.baseDir, self.path, self.server.baseDir,
GETstartTime, GETtimings) GETstartTime)
return return
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
@ -13413,16 +13393,14 @@ class PubServer(BaseHTTPRequestHandler):
# Note that this comes before the busy flag to avoid conflicts # Note that this comes before the busy flag to avoid conflicts
if self.path.startswith('/icons/'): if self.path.startswith('/icons/'):
self._showIcon(callingDomain, self.path, self._showIcon(callingDomain, self.path,
self.server.baseDir, self.server.baseDir, GETstartTime)
GETstartTime, GETtimings)
return return
# help screen images # help screen images
# Note that this comes before the busy flag to avoid conflicts # Note that this comes before the busy flag to avoid conflicts
if self.path.startswith('/helpimages/'): if self.path.startswith('/helpimages/'):
self._showHelpScreenImage(callingDomain, self.path, self._showHelpScreenImage(callingDomain, self.path,
self.server.baseDir, self.server.baseDir, GETstartTime)
GETstartTime, GETtimings)
return return
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
@ -13435,7 +13413,7 @@ class PubServer(BaseHTTPRequestHandler):
if self.path.startswith('/avatars/'): if self.path.startswith('/avatars/'):
self._showCachedAvatar(refererDomain, self.path, self._showCachedAvatar(refererDomain, self.path,
self.server.baseDir, self.server.baseDir,
GETstartTime, GETtimings) GETstartTime)
return return
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
@ -13649,7 +13627,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings) GETstartTime)
return return
self._hashtagSearch(callingDomain, self._hashtagSearch(callingDomain,
self.path, cookie, self.path, cookie,
@ -13660,7 +13638,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings) GETstartTime)
return return
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
@ -13847,7 +13825,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
repeatPrivate, repeatPrivate,
self.server.debug) self.server.debug)
return return
@ -13871,7 +13849,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
repeatPrivate, repeatPrivate,
self.server.debug, self.server.debug,
self.server.recentPostsCache) self.server.recentPostsCache)
@ -13894,7 +13872,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
self.server.debug, self.server.debug,
self.server.newswire) self.server.newswire)
@ -13912,7 +13890,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
self.server.debug, self.server.debug,
self.server.newswire) self.server.newswire)
@ -13930,7 +13908,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
self.server.debug) self.server.debug)
return return
@ -13952,7 +13930,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
self.server.debug) self.server.debug)
return return
@ -13971,7 +13949,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domainFull, self.server.domainFull,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
cookie, cookie,
self.server.debug) self.server.debug)
@ -13991,7 +13969,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.domainFull, self.server.domainFull,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
cookie, self.server.debug) cookie, self.server.debug)
return return
@ -14011,7 +13989,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, self.server.proxyType,
cookie, self.server.debug) cookie, self.server.debug)
return return
@ -14031,7 +14009,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, cookie, self.server.proxyType, cookie,
self.server.debug) self.server.debug)
return return
@ -14051,7 +14029,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.port, self.server.port,
self.server.onionDomain, self.server.onionDomain,
self.server.i2pDomain, self.server.i2pDomain,
GETstartTime, GETtimings, GETstartTime,
self.server.proxyType, cookie, self.server.proxyType, cookie,
self.server.debug) self.server.debug)
return return
@ -16920,6 +16898,9 @@ def runDaemon(defaultReplyIntervalHours: int,
# scan the theme directory for any svg files containing scripts # scan the theme directory for any svg files containing scripts
assert not scanThemesForScripts(baseDir) assert not scanThemesForScripts(baseDir)
# fitness metrics
httpd.fitness = {}
# initialize authorized fetch key # initialize authorized fetch key
httpd.signingPrivateKeyPem = None httpd.signingPrivateKeyPem = None

View File

@ -0,0 +1,39 @@
__filename__ = "fitnessFunctions.py"
__author__ = "Bob Mottram"
__license__ = "AGPL3+"
__version__ = "1.2.0"
__maintainer__ = "Bob Mottram"
__email__ = "bob@libreserver.org"
__status__ = "Production"
__module_group__ = "Core"
import time
def fitnessPerformance(startTime, fitnessState: {},
fitnessId: str, watchPoint: str, debug: bool) -> None:
"""Log a performance watchpoint
"""
if 'performance' not in fitnessState:
fitnessState['performance'] = {}
if fitnessId not in fitnessState['performance']:
fitnessState['performance'][fitnessId] = {}
timeDiff = time.time() - startTime
fitnessState['performance'][fitnessId][watchPoint] = timeDiff
if 'total' in fitnessState['performance'][fitnessId]:
fitnessState['performance'][fitnessId]['total'] += timeDiff
fitnessState['performance'][fitnessId]['ctr'] += 1
if fitnessState['performance'][fitnessId]['ctr'] >= 1024:
fitnessState['performance'][fitnessId]['total'] /= 2
fitnessState['performance'][fitnessId]['ctr'] = \
int(fitnessState['performance'][fitnessId]['ctr'] / 2)
else:
fitnessState['performance'][fitnessId]['total'] = timeDiff
fitnessState['performance'][fitnessId]['ctr'] = 1
if debug:
print('FITNESS: performance/' + fitnessId + '/' +
watchPoint + '/' +
str(fitnessState['performance'][fitnessId][watchPoint]))