#!/usr/bin/env python3
#
# Public Domain 2014-present MongoDB, Inc.
# Public Domain 2008-2014 WiredTiger, Inc.
#
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
# binary, for any purpose, commercial or non-commercial, and by any
# means.
#
# In jurisdictions that recognize copyright laws, the author or authors
# of this software dedicate any and all copyright interest in the
# software to the public domain. We make this dedication for the benefit
# of the public at large and to the detriment of our heirs and
# successors. We intend this dedication to be an overt act of
# relinquishment in perpetuity of all present and future rights to this
# software under copyright law.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

# Return global timestamps for a WT directory

import os, sys
from wt_tools_common import wiredtiger_open

# There are two more listed in documentation: 'oldest_timestamp' and 'stable_timestamp',
# theses are aliases for 'oldest' and 'stable', so they are not listed here.
default_query = ['all_durable', 'last_checkpoint', 'oldest', 'oldest_reader',
              'pinned', 'recovery', 'stable']

def usage_exit():
    print('Usage: wt_typestamp [ -q query1 ] [ -q query2 ] directory...')
    print('   where -q arguments are one of:')
    print('   ' + ','.join(default_query))
    sys.exit(1)

def wt_timestamps(conn, query):
    session = conn.open_session()
    for s in query:
        print('{}={}'.format(s, conn.query_timestamp('get=' + s)))

args = sys.argv[1:]

query = []
while len(args) > 1 and args[0][0] == '-':
    if args[0] == '-q':
        query.append(args[1])
        args = args[2:]
    else:
        usage_exit()

if len(args) < 1:
    usage()

if query == []:
    query = default_query

first=True
for arg in args:
    if not first:
        print('')
    print(arg + ':')
    conn = wiredtiger_open(arg, 'readonly')
    wt_timestamps(conn, query)
    conn.close()
    first=False
