आप अपनी अगली छोटी सुविधा में जाँच करने वाले हैं, इसलिए आप एक पूर्ण एकीकरण परीक्षण रन शुरू करते हैं। आप प्रतीक्षा करें, और प्रतीक्षा करें, जब तक बिंदु आपकी स्क्रीन को भर देते हैं, तब तक…
......FF....
:-(
आपके परीक्षण समाप्त होने में अभी भी कुछ मिनट शेष हैं। लेकिन अगर आप टेस्ट रन जल्दी छोड़ देते हैं, तो आपको पता नहीं . होगा कौन से परीक्षण विफल रहे।
क्या आपको वास्तव में उन विफलताओं को देखने से पहले पूरी दौड़ के समाप्त होने की प्रतीक्षा करनी होगी?
Ctrl-T बचाव के लिए!
यदि आप Mac का उपयोग कर रहे हैं, तो अपनी परीक्षण विफलताओं को जल्दी देखने का एक तरीका है:
Ctrl-T
दबाएं जब आपके परीक्षण चल रहे हों।
जब आप ऐसा करते हैं, तो आप देखेंगे कि वर्तमान में कौन सा परीक्षण केस चल रहा है, और यह कितने समय से चल रहा है। यदि अब तक कोई परीक्षण विफल हुआ है, तो आप भी . करेंगे उन विफलताओं को देखें, ताकि आप अपने अगले रन से पहले उन्हें ठीक करने की शुरुआत कर सकें!
यह डिबगिंग परीक्षणों के लिए भी वास्तव में आसान है जो बस लटकते हैं। Ctrl-T
आपको बताएगा कि कौन सा परीक्षण कोशिश कर रहा है चलाने के लिए, ताकि आप केवल एक परीक्षण को अलग कर सकें और उसे ठीक कर सकें।
अंत में, मैंने Ctrl-T
. मारने की आदत बना ली है किसी भी समय एक परीक्षण को समाप्त होने में काफी लंबा समय लगता है (जैसे, एक सेकंड या उससे अधिक)। इसने मुझे बहुत से धीमे परीक्षणों की ओर इशारा किया है जिन्हें मुझे तेज़ करने की आवश्यकता है।
Ctrl-T कैसे कार्य करता है?
मैक पर, Ctrl-T
एक संदेश, या संकेत भेजता है, जिसे INFO
. कहा जाता है , जो भी प्रोग्राम चल रहा हो:
puts "Starting..."
trap("INFO") { puts "INFO triggered!" }
loop { print "."; sleep 0.1}
~/Source jweiss$ ruby signal_test.rb
Starting...
........^Tload: 7.14 cmd: ruby 6121 running 0.10u 0.08s
INFO triggered!
.......^Tload: 7.14 cmd: ruby 6121 running 0.10u 0.08s
INFO triggered!
................^Tload: 11.77 cmd: ruby 6121 running 0.10u 0.08s
.INFO triggered!
......^Csignal_test.rb:5:in `sleep': Interrupt
from signal_test.rb:5:in `block in <main>'
from signal_test.rb:5:in `loop'
from signal_test.rb:5:in `<main>'
मिनिटेस्ट INFO
के बारे में जानता है , और परीक्षण चलाने के बारे में जानकारी प्रिंट करके इसका जवाब देता है:
~/Source/rails/activesupport[master] jweiss$ be rake
/usr/local/Cellar/ruby/2.2.0/bin/ruby -w -I"lib:test" "/usr/local/Cellar/ruby/2.2.0/lib/ruby/2.2.0/rake/rake_test_loader.rb" "test/**/*_test.rb"
Run options: --seed 33445
# Running:
.................F........^Tload: 1.62 cmd: ruby 29646 running 4.37u 1.40s
Current results:
1) Failure:
CleanLoggerTest#test_format_message [/Users/jweiss/Source/rails/activesupport/test/clean_logger_test.rb:13]:
Expected "error\n" to not be equal to "error\n".
Current: DigestUUIDExt#test_invalid_hash_class 0.02s
............................
बहुत अच्छा!
यह जानते हुए कि यह संभव है, आप सोच सकते हैं कि अन्य ऐप्स INFO
को कैसे संभाल सकते हैं :
- रेल वर्तमान में चल रहे नियंत्रक क्रिया या कुछ प्रदर्शन आँकड़े प्रदर्शित कर सकती है।
- साइडकीक आपको बता सकता है कि प्रत्येक कार्यकर्ता क्या कर रहा है, ताकि आप देख सकें कि वे कहां फंस गए हैं।
और साइडकीक वास्तव में INFO
. का उपयोग करता था प्रत्येक थ्रेड के बैकट्रैक को प्रिंट करने के लिए यह चलता है। लेकिन क्योंकि INFO
Linux पर समर्थित नहीं है, Sidekiq ने किसी भिन्न सिग्नल पर स्विच किया है। दुर्भाग्य से, उस सिग्नल को INFO
. की तरह कीबोर्ड शॉर्टकट से ट्रिगर नहीं किया जा सकता है कर सकते हैं।
क्योंकि INFO
Linux पर उपलब्ध नहीं है (और कुछ लोग कह सकते हैं कि INFO
. का उपयोग करके यह तरीका पूरी तरह से सही नहीं है, वैसे भी), यह व्यवहार उतना व्यापक नहीं है जितना हो सकता है।
फिर भी, यह थोड़ी अतिरिक्त सहायता है जो विभिन्न स्थितियों में उपयोगी हो सकती है। यदि आप कोई ऐप बना रहे हैं, तो यह सोचने लायक है कि आप रुचि रखने वाले लोगों को मांग पर किस प्रकार के स्थिति संदेश प्रदर्शित कर सकते हैं।