Skip to main content
Glama
pshempel

MCP Time Server Node

by pshempel
stress_tester.cpython-311.pyc12.8 kB
� �hC(��b�dZddlZddlZddlmZddlmZddlmZddlZGd�de��Z dS)z� Enhanced Stress Tester with Configuration Support ================================================ Builds on SimpleStressTester with file-based logging and better reporting. �N)�datetime)�Path)�SimpleStressTesterc�H��eZdZdZd �fd� Z�fd�Zd d�Zd�Zd�Zd �Z �xZ S) �ConfigurableStressTesterz@Stress tester that uses configuration and provides better outputNc�~��t���|p tj��d|_d|_dS)zInitialize with config valuesN)�super�__init__�config�SERVER_COMMAND� results_file�start_timestamp)�self� server_cmd� __class__s ��D/home/pshempel/src/local/time-node_tdd/tests/stress/stress_tester.pyr z!ConfigurableStressTester.__init__s9��� ������<�v�'<�=�=�=� ���#�����c���t�����tjtj��dS)z&Start server with configured wait timeN)r � start_server�time�sleepr �SERVER_STARTUP_TIME)rrs �rrz%ConfigurableStressTester.start_servers2��� �������� � �6�-�.�.�.�.�.r�standardc � �|�tj|d}tj��|_|j�d��}tjtj�|���z |_ td|�d|�d���|j � tj ��r$|j � tj ��n |j j}td|����td ��|tj|d ||j���d d �gggd �}t!j��}|���}ddd|ddd�}|d�d|dd���d} |} |} d} d} t!j��|z |k�rk|�|| ��}|�|��}|dxxdz cc<| dz } |�d|vrr|dxxdz cc<| dz } t+|d��dkrD|d�| t!j��|z |rt-|��ndd���tjr�t!j��| z tjkrgt!j��|z }|���}td|d�d|d�d|d�d|d�d� ��t!j��} t!j��| z tjkr`|���}|d�t!j��|z ||dd���t!j��} | tjkrJ|d �t!j��|z | | |���d!���d} d} | dz } t!jtj��t!j��|z |k��kt!j��|z |d<|���|d"<|�||d"tj��|d#<|d�|d|d"|dd���||d$<t?|j d%��5}tAj!||d&�'��ddd��n #1swxYwY|�"||��|S)(z6Enhanced hammer with file logging and progress updatesN�durationz %Y%m%d_%H%M%S)� timestampz Running z scenario for z secondszResults will be saved to: �<============================================================� descriptionznode dist/index.js)�scenariorr� start_time�server_command)� test_info�memory_snapshots�request_batches�errorsrF)�total_requestsr%r� memory_start� memory_end�memory_leak_detectedr#)r� memory_mb�requests_so_far�r&�errorr%� z No response)� request_idrr-z Progress: z requests, z errors, �.1fzs elapsed, Memory: � MBr$)r�requestsr%� avg_memoryr(r)�summary�w���indent)#r �TEST_SCENARIOSr�nowr�strftime� RESULTS_DIR�DETAIL_FILE_PATTERN�formatr �print�is_relative_to� PROJECT_ROOT� relative_to�name� isoformatr� check_memory�append�_create_request� send_request�len�str� SHOW_PROGRESS�PROGRESS_UPDATE_INTERVAL�MEMORY_CHECK_INTERVAL�REQUESTS_PER_BATCHr� REQUEST_DELAY�is_memory_leak�MEMORY_LEAK_THRESHOLD�open�json�dump�_update_summary)r�secondsr� timestamp_str� relative_path�detailed_resultsr � start_memory�resultsr/� last_update�last_memory_check�batch_requests� batch_errors�request�response�elapsed� current_mem�fs r� hammer_serverz&ConfigurableStressTester.hammer_servers��� �?��+�H�5�j�A�G�'�|�~�~����,�5�5�o�F�F� �#�.��1K�1R�1R�#�2S�2 �2 � ��� �D�8�D�D�7�D�D�D�E�E�E�NR�N_�Nn�Nn�ou�pC�OD�OD�`��)�5�5�f�6I�J�J�J�JN�J[�J`� � �:�=�:�:�;�;�;� �h���� %�%�4�X�>�}�M�#�"�2�<�<�>�>�"6� ��!#�!��  �  ���Y�[�[� ��(�(�*�*� � ���(��$)�  � �� �+�,�3�3��%� �5 �5 � � � � � � � �&����� ��i�k�k�J�&��0�0��*�*�8�Z�@�@�G��(�(��1�1�H� �$� %� %� %�� *� %� %� %� �a� �N���7�h�#6�#6���!�!�!�Q�&�!�!�!���!� ��'��1�2�2�R�7�7�$�X�.�5�5�&0� $� � � �j� 8�2:�!M��X���� �7�7�����#� *�� � � �k�(A�F�Dc�(c�(c��)�+�+� �2��"�/�/�1�1� ��6�7�+;�#<�6�6� ��*�6�6� �1�6�6�"-�5�6�6�6�7�7�7�#�i�k�k� ��y�{�{�.�.��1M�M�M�"�/�/�1�1� � �!3�4�;�;� �I�K�K�*�4�!,�'.�/?�'@�=�=���� %)�I�K�K�!���!:�:�:� �!2�3�:�:� �I�K�K�*�4� .�*�"&�"3�"3�"5�"5� <�<���� "#�� � � �!�O�J� �J�v�+� ,� ,� ,�e�i�k�k�J�&��0�0�j#�i�k�k�J�6�� �� $� 1� 1� 3� 3�� ��*.�*=�*=� �'�,�/��1M�+ �+ ��&�'� �+�,�3�3��J�'� ��.�&�'7�8�5 �5 � � � �'.���#��$�#�S� )� )� 5�Q� �I�&��!� 4� 4� 4� 4� 5� 5� 5� 5� 5� 5� 5� 5� 5� 5� 5���� 5� 5� 5� 5� ���X�w�/�/�/��s�S,�,S0�3S0c��d|d�}tj|d}|dkr|�ddddid�d ���n�|d kr!|�dddd |��id�d ���n]|d kr|�dd id�d ���n;|dkr5|dzdkr|�d |��S|�d|��S|S)z Create request based on scenarioz2.0)�jsonrpc�id� request_type�get_current_timez tools/call�timezone�UTC)rC� arguments)�method�params�unique_timezonesz Test/Zone�invalid�nonexistent_tool�mixed�rr)r r9�updaterG)rrr/� base_requestris rrGz(ConfigurableStressTester._create_request�s`���� � � � �,�X�6�~�F� � �-� -� -� � � �&�.�",�e�!4���!�!� � � � ��/� /� /� � � �&�.�",�.F�*�.F�.F�!G���!�!� � � � ��Y� &� &� � � �&�.�!#���!�!� � � � ��W� $� $��A�~��"�"��+�+�I�z�B�B�B��+�+�J� �C�C�C��rc ��i}tj���rFttjd��5}t j|��}ddd��n #1swxYwYd|vrg|d<|d�|j���||d|d|d|d|d|d t|j j ��d � ��t|d��d kr|dd d�|d<ttjd ��5}t j ||d���ddd��dS#1swxYwYdS)z,Update summary file with latest test results�rN�testsrr&r%r'r(r)) rrrr&r%r'r(r)r �di����r5r6r7)r � SUMMARY_FILE�existsrRrS�loadrFrrDrJr rCrIrT)rrr[r4rds rrUz(ConfigurableStressTester._update_summary�s����� � � %� %� '� '� '��f�)�3�/�/� '�1��)�A�,�,�� '� '� '� '� '� '� '� '� '� '� '���� '� '� '� '� �'� !� !�!�G�G� �������-�7�7�9�9� �� �+�%�&6�7��h�'�#�N�3�!�,�/�$+�,B�$C��� 1� 6�7�7� ! � ! � � � � �w�w�� � �3� &� &�&�w�/����6�G�G� � �&�%�s� +� +� ,�q� �I�g�q�� +� +� +� +� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,���� ,� ,� ,� ,� ,� ,s#�A�A �#A �-E�E�Ec�v�td��td��td��td|dd����td|d�d |d|dz d zd �d ���td |dd �d���td|d|dz d ����td��td|dd �d���td|dd �d���td|d|dz d �d|d|dz |dz d zd �d ���|drtd��ntd��|j�tj��r$|j�tj��n |jj}tj�tj��r)tj�tj��ntjj}td|����td|����dS)zPrint a nice summary of resultsz= ============================================================z Test SummaryrzTotal requests: r&�,zErrors: r%z (rzr0z%)z Duration: r�szRequests/sec: z Memory:z Start: r'r1z End: r(z Growth: z MB (r)u ❌ MEMORY LEAK DETECTED!u ✅ No memory leak detectedz Detailed results saved to: zSummary updated in: N)r?r r@r rArBrCr{)rr[� results_rel� summary_rels r� print_summaryz&ConfigurableStressTester.print_summary�s��� �o���� �n���� �h���� �>��)9�!:�>�>�>�?�?�?� �J���*�J�J��(�#�G�,<�$=�=�c�A�I�J�J�J� K� K� K� �5�7�:�.�5�5�5�5�6�6�6� �T�w�'7�8�7�:�;N�N�T�T�T�U�U�U� �l���� �:�'�.�1�:�:�:�:�;�;�;� �6�� �-�6�6�6�6�7�7�7� �l�7�<�0�7�>�3J�J�T�l�l��<�(�7�>�+B�B�g�n�F]�]�`c�c�k�l�l�l� m� m� m� �)� *� 3� �/� 0� 0� 0� 0� �1� 2� 2� 2�MQ�L]�Ll�Ll�ms�nA�MB�MB�^�d�'�3�3�F�4G�H�H�H�HL�HY�H^� �NT�Na�Np�Np�qw�rE�OF�OF�d�f�)�5�5�f�6I�J�J�J�LR�L_�Ld� � �;�k�;�;�<�<�<� �2�[�2�2�3�3�3�3�3r)N)Nr) �__name__� __module__� __qualname__�__doc__r rrerGrUr�� __classcell__)rs@rrrs��������J�J�$�$�$�$�$�$� /�/�/�/�/� G�G�G�G�R)�)�)�V,�,�,�:4�4�4�4�4�4�4rr) r�rSrr�pathlibr� stress_testrr r�rr�<module>r�s�����  � � � � � � � �������������*�*�*�*�*�*� � � � �y4�y4�y4�y4�y4�1�y4�y4�y4�y4�y4r

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pshempel/mcp-time-server-node'

If you have feedback or need assistance with the MCP directory API, please join our Discord server