def __transform_input__(cls, data: RawDataType) -> None: players = data["players"] for key, value in players.items(): try: new_value = build_from_raw(Play, value) except TypeError: new_value = build_from_raw(Update, value) players[key] = new_value
def test_error_load(): raw_data = {"class": "java.lang.NullPointerException", "message": None, "suppressed": [], "stack": [ {"classLoader": "app", "moduleName": None, "moduleVersion": None, "className": "andesite.node.handler.RestHandler", "methodName": "lambda$trackRoutes$25", "fileName": "RestHandler.java", "lineNumber": 288, "pretty": "andesite.node.handler.RestHandler.lambda$trackRoutes$25(RestHandler.java:288)"}, {"classLoader": "app", "moduleName": None, "moduleVersion": None, "className": "io.netty.util.concurrent.SingleThreadEventExecutor$5", "methodName": "run", "fileName": "SingleThreadEventExecutor.java", "lineNumber": 897, "pretty": "io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)"}, {"classLoader": "app", "moduleName": None, "moduleVersion": None, "className": "io.netty.util.concurrent.FastThreadLocalRunnable", "methodName": "run", "fileName": "FastThreadLocalRunnable.java", "lineNumber": 30, "pretty": "io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)"}, {"classLoader": None, "moduleName": "java.base", "moduleVersion": "11.0.2", "className": "java.lang.Thread", "methodName": "run", "fileName": "Thread.java", "lineNumber": 834, "pretty": "java.base/java.lang.Thread.run(Thread.java:834)"} ], "cause": None} error = build_from_raw(Error, raw_data) assert error == Error("java.lang.NullPointerException", None, [ StackFrame("app", None, None, "andesite.node.handler.RestHandler", "lambda$trackRoutes$25", "RestHandler.java", 288, "andesite.node.handler.RestHandler.lambda$trackRoutes$25(RestHandler.java:288)"), StackFrame("app", None, None, "io.netty.util.concurrent.SingleThreadEventExecutor$5", "run", "SingleThreadEventExecutor.java", 897, "io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)"), StackFrame("app", None, None, "io.netty.util.concurrent.FastThreadLocalRunnable", "run", "FastThreadLocalRunnable.java", 30, "io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)"), StackFrame(None, "java.base", "11.0.2", "java.lang.Thread", "run", "Thread.java", 834, "java.base/java.lang.Thread.run(Thread.java:834)") ], [], None)
def __transform_input__(cls, data: RawDataType) -> None: map_convert_value(data, "load_type", LoadType) try: playlist_info = data["playlist_info"] except KeyError: pass else: # my god, Andesite now sends an empty object if the playlist_info is null # and we absolutely don't want that! So if it's falsy, use None if playlist_info: playlist_info = build_from_raw(PlaylistInfo, playlist_info) else: playlist_info = None data["playlist_info"] = playlist_info map_build_values_from_raw(data, cause=Error) try: tracks = data["tracks"] except KeyError: pass else: seq_build_all_items_from_raw(tracks, TrackInfo)
def test_build_from_raw(): raw = { "helloWorld": "test", "nest": { "coolThing": 5500, "test": 3 } } assert build_from_raw(DataTest, raw) == DataTest("test", NestedTest(5.5, 3))
def __transform_input__(cls, data: RawDataType) -> RawDataType: filters: RawDataType = {} for name, filter_value in data.items(): filter_cls = get_filter_model(name) if filter_cls is not None: filter_value = build_from_raw(filter_cls, filter_value) filters[name] = filter_value return dict(filters=filters)
def test_filter_map_from_raw(): raw = { "karaoke": { "filterBand": 220.0, "filterWidth": 100.0, "level": 1.0, "monoLevel": 1.0 } } f = build_from_raw(FilterMap, raw) assert f == FilterMap(dict(karaoke=Karaoke())) assert convert_to_raw(raw) == raw
def test_track_end_event_build(): raw_data = { "type": "TrackEndEvent", "guildId": "549904277108424715", "userId": "549905730099216384", "track": "QAAAmAIANUFudWVsIEFBIC0gRW", "reason": "FINISHED", "mayStartNext": True } # noinspection PyArgumentList assert build_from_raw(TrackEndEvent, raw_data) == TrackEndEvent( "TrackEndEvent", 549905730099216384, 549904277108424715, "QAAAmAIANUFudWVsIEFBIC0gRW", TrackEndReason.FINISHED, True)
def test_track_start_event_build(): raw_data = { "type": "TrackStartEvent", "guildId": "549904277108424715", "userId": "549905730099216384", "track": "QAAAiwIAJ0x1aXMg" } # noinspection PyArgumentList assert build_from_raw(TrackStartEvent, raw_data) == TrackStartEvent("TrackStartEvent", 549905730099216384, 549904277108424715, "QAAAiwIAJ0x1aXMg")
def test_filter_map_to_raw(): f = FilterMap({}) f.set_filter(Karaoke()) raw = convert_to_raw(f) assert raw == { "karaoke": { "filterBand": 220.0, "filterWidth": 100.0, "level": 1.0, "monoLevel": 1.0 } } assert build_from_raw(FilterMap, raw) == f
def test_unknown_andesite_event(): data = { "type": "SpecialEvent", "userId": "1231231231231", "guildId": "234234234234234", "a": 5, "b": 6, } data_copy = copy.deepcopy(data) data_copy_low = copy.deepcopy(data_copy) lettercase.mut_convert_keys(data_copy_low, None, "snake") evt = build_from_raw(UnknownAndesiteEvent, data) assert evt.body == data_copy_low new_data = convert_to_raw(evt) assert data_copy == new_data
def get_filter(self, name: str, cls: Type[FT]) -> FT: """Get the filter with the name. Args: name: Name of the filter to get cls: `Filter` class to use for the filter. """ try: value = self[name] except KeyError: value = self[name] = cls() else: if not isinstance(value, cls): if isinstance(value, dict): value = self[name] = build_from_raw(cls, value) else: raise TypeError(f"Expected {cls}, found {type(value)!r}: {value}") return value
def __transform_input__(cls, data: RawDataType) -> RawDataType: new_data = {**data} new_data["nest"] = build_from_raw(NestedTest, new_data["nest"]) return new_data
def test_stats_load(): raw_data = {"players": {"total": 1, "playing": 0}, "runtime": {"uptime": 99400057, "pid": 21370, "managementSpecVersion": "2.0", "name": "21370@node3", "vm": {"name": "Zing 64-Bit Tiered VM", "vendor": "Azul Systems, Inc.", "version": "11.0.1-zing_19.02.1.0-b2-product-azlinuxM-X86_64"}, "spec": {"name": "Java Virtual Machine Specification", "vendor": "Oracle Corporation", "version": "11"}, "version": {"feature": 11, "interim": 0, "update": 2, "patch": 0, "pre": None, "build": 9, "optional": "LTS"}}, "os": {"processors": 12, "name": "Linux", "arch": "amd64", "version": "4.15.0-46-generic"}, "cpu": {"andesite": 3.9876363152102217E-4, "system": 0.025722987996724848}, "classLoading": {"loaded": 7149, "totalLoaded": 7149, "unloaded": 0}, "thread": {"running": 52, "daemon": 30, "peak": 53, "totalStarted": 68}, "compilation": {"name": "Zing 64-Bit Tiered VM", "totalTime": 108560}, "memory": {"pendingFinalization": 0, "heap": {"init": 0, "used": 1774190592, "committed": 39512436736, "max": 39512436736}, "nonHeap": {"init": 0, "used": 8723456, "committed": 268435456, "max": 268435456}}, "gc": [{"name": "GPGC New", "collectionCount": 0, "collectionTime": 0, "pools": ["GenPauseless New Gen"]}, {"name": "GPGC Old", "collectionCount": 0, "collectionTime": 0, "pools": ["GenPauseless Old Gen", "GenPauseless Perm Gen"]}], "memoryPools": [ {"name": "GenPauseless New Gen", "type": "HEAP", "collectionUsage": {"init": 2097152, "used": 0, "committed": 0, "max": 41976594432}, "collectionUsageThreshold": 0, "collectionUsageThresholdCount": 0, "peakUsage": {"init": 2097152, "used": 1707081728, "committed": 1707081728, "max": 41976594432}, "usage": {"init": 2097152, "used": 1707081728, "committed": 1707081728, "max": 41976594432}, "usageThreshold": 0, "usageThresholdCount": 0, "managers": ["GPGC New"]}, {"name": "GenPauseless Old Gen", "type": "HEAP", "collectionUsage": {"init": 0, "used": 0, "committed": 0, "max": 41976594432}, "collectionUsageThreshold": 0, "collectionUsageThresholdCount": 0, "peakUsage": {"init": 0, "used": 0, "committed": 0, "max": 41976594432}, "usage": {"init": 0, "used": 0, "committed": 0, "max": 41976594432}, "usageThreshold": 0, "usageThresholdCount": 0, "managers": ["GPGC Old"]}, {"name": "GenPauseless Perm Gen", "type": "HEAP", "collectionUsage": {"init": 2097152, "used": 0, "committed": 0, "max": 41976594432}, "collectionUsageThreshold": 0, "collectionUsageThresholdCount": 0, "peakUsage": {"init": 2097152, "used": 67108864, "committed": 67108864, "max": 41976594432}, "usage": {"init": 2097152, "used": 67108864, "committed": 67108864, "max": 41976594432}, "usageThreshold": 0, "usageThresholdCount": 0, "managers": ["GPGC Old"]}, {"name": "CodeCache", "type": "NON_HEAP", "collectionUsage": None, "collectionUsageThreshold": None, "collectionUsageThresholdCount": None, "peakUsage": {"init": 0, "used": 8723456, "committed": 268435456, "max": 268435456}, "usage": {"init": 0, "used": 8723456, "committed": 268435456, "max": 268435456}, "usageThreshold": 0, "usageThresholdCount": 0, "managers": ["CodeCache"]} ], "memoryManagers": [{"name": "CodeCache", "pools": ["CodeCache"]}, {"name": "GPGC New", "pools": ["GenPauseless New Gen"]}, {"name": "GPGC Old", "pools": ["GenPauseless Old Gen", "GenPauseless Perm Gen"]}], "frameStats": [{"user": "******", "guild": "549904277108424715", "success": 0, "loss": 1500}]} stats = build_from_raw(Stats, raw_data) assert stats == Stats( PlayersStats(1, 0), RuntimeStats(99400057, 21370, "2.0", "21370@node3", RuntimeVMStats("Zing 64-Bit Tiered VM", "Azul Systems, Inc.", "11.0.1-zing_19.02.1.0-b2-product-azlinuxM-X86_64"), RuntimeSpecStats("Java Virtual Machine Specification", "Oracle Corporation", "11"), RuntimeVersionStats(11, 0, 2, 0, None, 9, "LTS")), OSStats(12, "Linux", "amd64", "4.15.0-46-generic"), CPUStats(3.9876363152102217E-4, 0.025722987996724848), ClassLoadingStats(7149, 7149, 0), ThreadStats(52, 30, 53, 68), CompilationStats("Zing 64-Bit Tiered VM", 108560), MemoryStats(0, MemoryCommonUsageStats(0, 1774190592, 39512436736, 39512436736), MemoryCommonUsageStats(0, 8723456, 268435456, 268435456)), [GCStats("GPGC New", 0, 0, ["GenPauseless New Gen"]), GCStats("GPGC Old", 0, 0, ["GenPauseless Old Gen", "GenPauseless Perm Gen"])], [ MemoryPoolStats("GenPauseless New Gen", "HEAP", MemoryCommonUsageStats(2097152, 0, 0, 41976594432), 0, 0, MemoryCommonUsageStats(2097152, 1707081728, 1707081728, 41976594432), MemoryCommonUsageStats(2097152, 1707081728, 1707081728, 41976594432), 0, 0, ["GPGC New"]), MemoryPoolStats("GenPauseless Old Gen", "HEAP", MemoryCommonUsageStats(0, 0, 0, 41976594432), 0, 0, MemoryCommonUsageStats(0, 0, 0, 41976594432), MemoryCommonUsageStats(0, 0, 0, 41976594432), 0, 0, ["GPGC Old"]), MemoryPoolStats("GenPauseless Perm Gen", "HEAP", MemoryCommonUsageStats(2097152, 0, 0, 41976594432), 0, 0, MemoryCommonUsageStats(2097152, 67108864, 67108864, 41976594432), MemoryCommonUsageStats(2097152, 67108864, 67108864, 41976594432), 0, 0, ["GPGC Old"]), MemoryPoolStats("CodeCache", "NON_HEAP", None, None, None, MemoryCommonUsageStats(0, 8723456, 268435456, 268435456), MemoryCommonUsageStats(0, 8723456, 268435456, 268435456), 0, 0, ["CodeCache"]) ], [MemoryManagerStats("CodeCache", ["CodeCache"]), MemoryManagerStats("GPGC New", ["GenPauseless New Gen"]), MemoryManagerStats("GPGC Old", ["GenPauseless Old Gen", "GenPauseless Perm Gen"])], [FrameStats(549905730099216384, 549904277108424715, 0, 1500)] )
def test_loaded_track_load(): raw_data = { "loadType": "SEARCH_RESULT", "tracks": [{ "track": "QAAAlQIAMFdoYXQgSXMgWW91ciBTb3VsIEVsZW1lbnQ/IENvb2wgUGVyc29uYWxpdHkgVGVzdAALQlJJR0hUIFNJREUAAAAAAApE6AALRmlzcjRZWV8yTDgAAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1GaXNyNFlZXzJMOAAHeW91dHViZQAAAAAAAAAA", "info": { "class": "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack", "title": "What Is Your Soul Element? Cool Personality Test", "author": "BRIGHT SIDE", "length": 673000, "identifier": "Fisr4YY_2L8", "uri": "https://www.youtube.com/watch?v=Fisr4YY_2L8", "isStream": False, "isSeekable": True, "position": 0 } }, { "track": "QAAAmQIANFdobyBJcyBTZWNyZXRseSBJbiBMb3ZlIFdpdGggWW91PyAoUGVyc29uYWxpdHkgVGVzdCkAC0JSSUdIVCBTSURFAAAAAAAHgeAAC2NIWHRuTkNzR280AAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Y0hYdG5OQ3NHbzQAB3lvdXR1YmUAAAAAAAAAAA==", "info": { "class": "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack", "title": "Who Is Secretly In Love With You? (Personality Test)", "author": "BRIGHT SIDE", "length": 492000, "identifier": "cHXtnNCsGo4", "uri": "https://www.youtube.com/watch?v=cHXtnNCsGo4", "isStream": False, "isSeekable": True, "position": 0 } }, { "track": "QAAAkAIAJjEzIFNVUlZJVkFMIFJJRERMRVMgVE8gVEVTVCBZT1VSIExPR0lDABA3LVNlY29uZCBSaWRkbGVzAAAAAAANB/AAC01QeHBEdGFQSHZBAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TVB4cER0YVBIdkEAB3lvdXR1YmUAAAAAAAAAAA==", "info": { "class": "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack", "title": "13 SURVIVAL RIDDLES TO TEST YOUR LOGIC", "author": "7-Second Riddles", "length": 854000, "identifier": "MPxpDtaPHvA", "uri": "https://www.youtube.com/watch?v=MPxpDtaPHvA", "isStream": False, "isSeekable": True, "position": 0 } }], "playlistInfo": { "name": "Search results for: test", "selectedTrack": None } } track = build_from_raw(LoadedTrack, raw_data) assert track == LoadedTrack(LoadType.SEARCH_RESULT, [ TrackInfo( "QAAAlQIAMFdoYXQgSXMgWW91ciBTb3VsIEVsZW1lbnQ/IENvb2wgUGVyc29uYWxpdHkgVGVzdAALQlJJR0hUIFNJREUAAAAAAApE6AALRmlzcjRZWV8yTDgAAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1GaXNyNFlZXzJMOAAHeW91dHViZQAAAAAAAAAA", TrackMetadata( "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack", "What Is Your Soul Element? Cool Personality Test", "BRIGHT SIDE", 673, "Fisr4YY_2L8", "https://www.youtube.com/watch?v=Fisr4YY_2L8", False, True, 0)), TrackInfo( "QAAAmQIANFdobyBJcyBTZWNyZXRseSBJbiBMb3ZlIFdpdGggWW91PyAoUGVyc29uYWxpdHkgVGVzdCkAC0JSSUdIVCBTSURFAAAAAAAHgeAAC2NIWHRuTkNzR280AAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Y0hYdG5OQ3NHbzQAB3lvdXR1YmUAAAAAAAAAAA==", TrackMetadata( "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack", "Who Is Secretly In Love With You? (Personality Test)", "BRIGHT SIDE", 492, "cHXtnNCsGo4", "https://www.youtube.com/watch?v=cHXtnNCsGo4", False, True, 0)), TrackInfo( "QAAAkAIAJjEzIFNVUlZJVkFMIFJJRERMRVMgVE8gVEVTVCBZT1VSIExPR0lDABA3LVNlY29uZCBSaWRkbGVzAAAAAAANB/AAC01QeHBEdGFQSHZBAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TVB4cER0YVBIdkEAB3lvdXR1YmUAAAAAAAAAAA==", TrackMetadata( "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack", "13 SURVIVAL RIDDLES TO TEST YOUR LOGIC", "7-Second Riddles", 854, "MPxpDtaPHvA", "https://www.youtube.com/watch?v=MPxpDtaPHvA", False, True, 0)) ], PlaylistInfo("Search results for: test", None))