Spusťte aplikaci pro Windows v libovolné datum - aniž byste sáhli na systémové hodiny
Nastavte hodiny jedné aplikace na příští rok, zastavte je, nebo je zrychlete tak, aby třicetidenní zkušební doba skončila, než si uvaříte kávu. Zbytek počítače si drží skutečný čas - přihlášení do domény, vaše certifikáty i všechny ostatní programy fungují dál jako obvykle.
A pak vám řekne, jestli náhrada času opravdu zabrala.
Zdarma a open source, GPL-3.0 Přenosně i nainstalovaně Ke spuštění nejsou třeba práva správce Nikdy nekomunikuje s internetem
Jak vypadá sezení
23:59:50
18:12:33
Proč to existuje
Testování čehokoli, co závisí na datu, vyžaduje posunout čas. Obě obvyklé možnosti jsou špatné.
Vypršení licence, zkušební doby, obnovení předplatného, platnost certifikátů, životnost tokenů, měsíční a roční uzávěrky, připisování úroků, připomínky.
Možnost 1 - změnit systémové hodiny
Rozbije přihlášení do domény a Kerberos, zneplatní certifikáty TLS, takže přestane fungovat prohlížeč, zmate Windows Update a způsobí, že všechny ostatní aplikace na počítači zapisují špatná časová razítka. Na počítači připojeném do domény změnu obvykle zablokují skupinové zásady, nebo ji za pár minut vrátí, takže test není ani opakovatelný.
Možnost 2 - čekat
Což znamená: netestovat. Případy závislé na datu se přeskočí a „licence nikdy nevyprší“ se dostane k zákazníkovi.
Co umí
Jeden proces se pohybuje v čase. Nic jiného na počítači ne.
Libovolný okamžik
Konkrétní datum a čas, nebo relativní - +30 days, -1 year.
Plynoucí, zastavený nebo zrychlený
Běžná rychlost, zastavené hodiny nebo celočíselný násobitel. x1440 promění den
v minutu.
Vlastní časové pásmo
Pevný posun jen pro tento proces, zatímco systémové pásmo zůstane přesně tam, kde bylo.
Podřízené procesy jdou s ním
Instalátory a spouštěče vytvářejí podřízené procesy. Bez toho test pokryje jen polovinu toho, co běželo.
Skok uprostřed sezení
Dopředu i zpět - včetně skoku zpět, který udělá notebook po opětovné synchronizaci s časovým serverem.
I Electron a Chromium
Jiným mechanismem, protože jejich hodiny žijí v izolovaném rendereru, kam injektáž nedosáhne.
Část, kterou nedělá nikdo jiný
Jak poznáte, že to zabralo?
U každého jiného nástroje nepoznáte. Aplikace se spustí, ukáže nějaké datum a vy předpokládáte. Jenže může číst hodiny kanálem, který nástroj nikdy nezachytil - ze serveru, z databáze, přes vrstvu běhového prostředí - a pak „test prošel“ neznamená vůbec nic.
- →Verdikt dřív, než začne skutečný test: funguje / funguje částečně / nefunguje
- →Které z 44 časových kanálů byly pokryté a kolikrát se aplikace na každý zeptala
- →Které kanály pokryté nebyly - řečeno otevřeně, nikdy vynecháno
- →Varování i s následky: „tato aplikace čte čas ze sítě - místní náhrada nemusí stačit“
Dvě minuty s ním
Okno pro zkoumání, příkazový řádek pro CI. Za oběma stejný stroj.
# Spusťte aplikaci, jako by byla poslední vteřina roku 2027 chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 # Sledujte, jak vyprší 30denní zkušební doba, než si uvaříte kávu: x1440 je den za minutu chrono run "C:\apps\test.exe" --mode x1440 # Použijte pojmenovaný scénář místo data a zapište důkazy do souboru chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt
Kalkulačka odpovídá na druhou polovinu testování dat - které datum použít:
$ chrono calc --preset year-2038 --zone +00:00 Chrono Mock - date calculator preset: year-2038 - 2038 boundary explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)? base: 2038-01-19T03:14:07 result: 2038-01-19T03:14:07 formats: ISO date 2038-01-19 ISO datetime 2038-01-19T03:14:07+00:00 US 01/19/2038 PL 19.01.2038 epoch (s) 2147483647 epoch (ms) 2147483647000 FILETIME 137919572470000000 RFC 1123 Tue, 19 Jan 2038 03:14:07 GMT ... what this date lands on: at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)
Srovnání s tím, co pravděpodobně používáte
Jako RunAsDate, s tím, co chybělo
RunAsDate zachycuje pět funkcí kalendářních hodin a dělá to dobře. Tady je, v čem se oba liší - a úplná stránka říká i to, kdy je RunAsDate stále lepší volba.
| RunAsDate | Chrono Mock | |
|---|---|---|
| Spustí aplikaci s falešným datem | ano | ano |
| Zachycené časové kanály | 5 | 44 (30 posunutých, 14 počítaných) |
| Zrychlení hodin | ne | ano |
| Nezávislé časové pásmo | nezdokumentováno | ano |
| Sleduje podřízené procesy | nezdokumentováno | ano |
| Řekne vám, jestli to zabralo | ne | ano, po kanálech |
| Dostupný zdrojový kód | freeware, uzavřený | GPL-3.0 |
Získejte ho
Rozbalte kamkoli a spusťte, nebo nainstalujte podepsaný soubor .msi pro každý
účet na počítači. Spuštění nevyžaduje práva správce a archivy zip nezapisují do registru nic.